Function(1): Listing All Permutations of String |
Function(2): Searching for the Longest Palindrome in String (case-sensitive, word matching method) |
def listAllPermutations(string):
permutation = []
for start in range(len(string)):
for end in range(start + 1, len(string) + 1):
permutation.append(string[start:end])
return permutation
#test-function
listAllPermutations("abcd")
['a', 'ab', 'abc', 'abcd', 'b', 'bc', 'bcd', 'c', 'cd', 'd']
def longestPalindrome(string):
permutations = []
for start in range(len(string)):
for end in range(start + 1, len(string) + 1):
if len(string[start:end]) > 1: #filters away single letters
permutations.append(string[start:end])
#print(permutations)
permutationsReversed = []
for string in permutations:
permutationsReversed.append(string[::-1]) #reverse strings
#print(permutationsReversed)
palindromes = []
for item in permutations:
for item2 in permutationsReversed:
if item == item2:
palindromes.append(item)
#print(palindromes)
if len(palindromes) > 0:
longestPalindrome = max(palindromes, key = len) #find longest letter in list
#print(longestPalindrome)
return longestPalindrome + " has " + str(len(longestPalindrome)) + " words."
else:
return "No palindrome found."
#test-function
longestPalindrome("This string have words like redivider, deified, civic, radar, level, rotor, kayak, reviver, racecar, madam, and refer")
'redivider has 9 words.'