Python Notes

Table of Contents

Function(1): Listing All Permutations of String
Function(2): Searching for the Longest Palindrome in String (case-sensitive, word matching method)

Listing All Permutations of String,  "for" Loop

Script:

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")

Output:

['a', 'ab', 'abc', 'abcd', 'b', 'bc', 'bcd', 'c', 'cd', 'd']

Searching for the Longest Palindrome in String (case-sensitive, word matching method)

Script:

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")

Output:

'redivider has 9 words.'