Palindrome Index

  • + 0 comments

    Python Complexity:O(n)

    def checkPalindrome(s):
        for i in range(len(s) // 2):
            if s[i] != s[len(s) - i - 1]:
                return False
        return True
    
    def palindromeIndex(s):
        idx = -1
        # s is palindrome
        if checkPalindrome(s):
            return -1
            
        # find the first character index that does not match
        for i in range(len(s) // 2):
            if s[i] == s[len(s) - i - 1]:
                continue
            else:
                idx = i
                break
        
        # drop the first character
        sub_s_1 = s[(idx+1) : (len(s) - idx)]
        if checkPalindrome(sub_s_1):
            return idx
        
        # drop the last character
        sub_s_2 = s[idx : (len(s) - idx - 1)]
        if checkPalindrome(sub_s_2):
            return len(s) - idx - 1
    
        return -1