我有一个纯 ASCII 字符串,它要么已经是回文,要么可以通过删除一个字符来制作回文。我需要确定它是否已经是回文,如果不是,我需要找到需要删除的字符的索引。例如,如果字符串是'aaba',则可以'aba'通过删除第一个字符将其制成回文,因此我需要返回0。
我有工作代码,但我想知道是否可以使它更快,因为我需要处理许多长字符串。
这是我的代码:
package main
import (
"fmt"
)
func Palindrome(s string) bool {
var l int = len(s)
for i := 0; i < l / 2; i++ {
if s[i] != s[l - 1 - i] {
return false;
}
}
return true
}
func RemoveChar(s string, idx int) string {
return s[0:idx-1] + s[idx:len(s)]
}
func findIdx(s string) int {
if Palindrome(s) {
return -1
}
for i := 0; i < len(s); i++ {
if Palindrome(RemoveChar(s, i + 1)) {
return i
}
}
return -2
}
func main() {
var s string = "aabaab"
fmt.Println(findIdx(s))
}
12345678_0001
相关分类