1 class Solution: 2 def breakPalindrome(self, palindrome: str) -> str: 3 n = len(palindrome) 4 if n <= 1: 5 return '' 6 half = n // 2 7 sub = palindrome[0:half]#不包含index==half的字符 8 9 for i in range(len(sub)): 10 c = palindrome[i] 11 if ord(c) > ord('a'): 12 palindrome = palindrome[0:i] + 'a' + palindrome[i+1:] 13 return palindrome 14 begin = half if n % 2 == 0 else (half + 1) 15 for j in range(n-1,begin-1,-1): 16 c = palindrome[j] 17 if ord(c) < ord('z'): 18 palindrome = palindrome[0:j] + chr(ord(c) + 1) + palindrome[j+1:] 19 return palindrome 20 return ''
算法类型:字符串处理。
思路分析:将回文字符串分为前后两个部分,
1先遍历前半部分:将第一个大于'a'的字符转变为a;
如果前半部分没有找到,则将遍历后半部分:将最后一个小于'z'的字符转变为字符+1。
如果两个部分都没有合适的值,则返回空。