Description
Given a palindromic string palindrome, replace exactly one character by any lowercase English letter so that the string becomes the lexicographically smallest possible string that isn’t a palindrome.
After doing so, return the final string. If there is no way to do so, return the empty string.
Example 1:
Input: palindrome = "abccba"
Output: "aaccba"
Example 2:
Input: palindrome = "a"
Output: ""
Constraints:
- 1 <= palindrome.length <= 1000
- palindrome consists of only lowercase English letters.
分析
题目的意思是:给定一个回文子串,然后改变一个字母使其不再构成回文子串。我没做出来,这道题技巧挺多的,比如把遍历到中间位置过程中第一个不等于a的位置变成a就行了;还有一种情况是全a的情况,这时候只需要把字符串最后一个变成b就行了;再就是如果只有一个字符的情况,直接返回空就行了。不要问我规律是怎么得来的,我也是看了答案,哈哈哈。
代码
class Solution:
def breakPalindrome(self, palindrome: str) -> str:
if(len(palindrome)==1):
return ''
first=True
res=''
n=len(palindrome)
for i in range(n//2):
if(palindrome[i]!='a'):
return palindrome[:i]+'a'+palindrome[i+1:]
if(palindrome[:-1]):
return palindrome[:-1]+'b'
return ''