Leetcode 1328.破坏回文串
1 题目描述(Leetcode题目链接)
给你一个回文字符串 palindrome ,请你将其中 一个 字符用任意小写英文字母替换,使得结果字符串的字典序最小,且 不是 回文串。
请你返回结果字符串。如果无法做到,则返回一个空串。
输入:palindrome = "abccba"
输出:"aaccba"
输入:palindrome = "a"
输出:""
提示:
- 1 <= palindrome.length <= 1000
- palindrome 只包含小写英文字母。
2 题解
分情况讨论:
- 如果回文串长度为1,则无法完成;
- 如果回文串的前一半全是 a a a,则将最后一个字符改成 b b b;
- 一般情况下,从头遍历回文串,将第一个非 a a a的字符变成 a a a。
class Solution:
def breakPalindrome(self, palindrome: str) -> str:
n = len(palindrome)
if n == 1:
return ""
if palindrome[:n//2].count("a") == n//2:
return palindrome[:-1] + "b"
for i in range(n//2 + 1):
if palindrome[i] != "a":
return palindrome[:i] + "a" + palindrome[i+1:]