1328.破坏回文串(中等)
1328.破坏回文串(中等) (opens new window)
解法:贪心 除了字符位数为1的不可更改,其余均可替换,将首个非a字符替换为a即可。 若全为a,替换最后一个字符为b 由于题目给定字符串为回文字符串,因而仅需要判定前一半(奇数总数时最中间不需要判断)。
func breakPalindrome(palindrome string) string {
if len(palindrome) == 1 {
return ""
}
origin := []byte(palindrome)
// 找到任意一个不是a的,尝试替换为a
// 成功则返回
for i := 0; i < len(origin)/2; i++ {
if origin[i] != 'a' {
origin[i] = 'a'
return string(origin)
}
}
// 将最后一个字符替换为b
origin[len(origin)-1] = 'b'
return string(origin)
}