思路一:正则表达式判断,剔除多余字符
func isPalindrome(s string) bool {
reg := regexp.MustCompile(`[^a-zA-Z0-9]+`)
str := reg.ReplaceAllString(s, "")
//err:注意边界条件
if len(str) < 2 {
return true
}
//err:注意,全部转换为小写
str = strings.ToLower(str)
for i := 0; i <= len(str)/2; i++ {
if str[i] != str[len(str)-1-i] {
return false
}
}
return true
}
思路二:遍历判断每个字符,判断
func isPalindrome(s string) bool {
//sRange:=[]rune(s)
var newRange []rune
for _,item:=range s{
if unicode.IsLetter(item) || unicode.IsDigit(item){
newRange=append(newRange,item)
}
}
str:=string(newRange)
//err:注意边界条件
if len(str) < 2 {
return true
}
//err:注意,全部转换为小写
str = strings.ToLower(str)
for i := 0; i <= len(str)/2; i++ {
if str[i] != str[len(str)-1-i] {
return false
}
}
return true
}