125. valid palindrome

2022-07-30  本文已影响0人  sarto

题目

如果在将所有大写字母转换成小写字母,并去除所有非字母数字后,正向反向读是一样的,则说明这是回文子串。
给定一个字符串 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
上一篇 下一篇

猜你喜欢

热点阅读