# 1328. Break a Palindrome

Medium
Given a palindromic string of lowercase English letters `palindrome`, replace exactly one character with any lowercase English letter so that the resulting string is not a palindrome and that it is the lexicographically smallest one possible.
Return the resulting string. If there is no way to replace a character to make it not a palindrome, return an empty string.
A string `a` is lexicographically smaller than a string `b` (of the same length) if in the first position where `a` and `b` differ, `a` has a character strictly smaller than the corresponding character in `b`. For example, `"abcc"` is lexicographically smaller than `"abcd"` because the first position they differ is at the fourth character, and `'c'` is smaller than `'d'`.
Example 1:
Input: palindrome = "abccba"
Output:
"aaccba"
Explanation:
There are many ways to make "abccba" not a palindrome, such as "zbccba", "aaccba", and "abacba".
Of all the ways, "aaccba" is the lexicographically smallest.
Example 2:
Input: palindrome = "a"
Output:
""
Explanation:
There is no way to replace a single character to make "a" not a palindrome, so return an empty string.
Constraints:
• `1 <= palindrome.length <= 1000`
• `palindrome` consists of only lowercase English letters.

### 解題

1. 1.
如果字串長度小於等於一，不論如何一定是palindrome，所以回傳""
2. 2.
迭代到字串的一半，若是遇到不等於a的字元，將之改為a
3. 3.
若全部都等於a，將最後一個字元改為b
func breakPalindrome(palindrome string) string {
ans := []rune(palindrome)
length := len(palindrome)
if length <= 1 {
return ""
}
for i := 0; i < length/2; i++ {
if ans[i] != 'a' {
ans[i] = 'a'
return string(ans)
}
}
ans[length-1] = 'b'
return string(ans)
}