题目
如果在将所有大写字母转换成小写字母,并去除所有非字母数字后,正向反向读是一样的,则说明这是回文子串。
给定一个字符串 s
, 返回 true
如果这是回文,不然的话,返回 false
。
解析
可以一边转换一边比较,但是代码会比较复杂,为了代码简单一些,先转换字符串,再进行比较。
伪代码
format(s)
for i < j
if s[i] != s[j]
return false
return true
代码
func isPalindrome(s string) bool {
sb := []byte(s)
p := 0
for i:=0; i<len(sb); i++ {
if sb[i] >= 'A' && sb[i] <= 'Z' {
sb[p] = 'a' + (sb[i] - 'A')
p++
continue
}
if (sb[i] >= 'a' && sb[i] <= 'z') || (sb[i] >= '0' && sb[i] <= '9') {
sb[p] = sb[i]
p++
continue
}
}
for i,j := 0, p-1; i<=j; i,j = i+1,j-1 {
if sb[i] != sb[j] {
return false
}
}
return true
}
image.png
网友评论