验证回文串

20 阅读1分钟

思路一:正则表达式判断,剔除多余字符

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
}