给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
func isPalindrome(s string) bool {
s = strings.Replace(s, " ", "", -1)
if s=="" {
return true
}
length := len(s)
i := 0
j := length-1
for i<j {
if !isletterordigit(s[i]) {
i++
} else if !isletterordigit(s[j]) {
j--
} else {
if strings.ToUpper(string(s[i])) == strings.ToUpper(string(s[j])) {
i++
j--
} else {
return false
}
}
}
return true
}
func isletterordigit(a byte) bool {
if byte('A') <= a && a <= byte('Z') || byte('a') <= a && a <= byte('z') || byte('0') <= a && a <= byte('9') {
return true
}
return false
}