0
点赞
收藏
分享

微信扫一扫

125. 验证回文串、Leetcode的Go实现

zmhc 2022-01-26 阅读 57

125. 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

示例 2:

提示:

先排除,在对比

func isPalindrome(s string) bool {
    //   遍历删除非数字和字母
    str:=[]rune{}
    for _,v:=range s{
        if v>='A'&&v<='Z'{
            str=append(str,v+32)
        }else if v>=48&&v<=57{
            str=append(str,v)
        }else if v>='a'&&v<='z'{
            str=append(str,v)
        }
    }
    // 使用双指针对比
    for i,j:=0,len(str)-1;i<=j;i,j=i+1,j-1{
        if str[i]!=str[j]{
            return false
        }
    }
    return true
}

直接双指针:

func isPalindrome(s string) bool {
    // 使用双指针对比
    for i,j:=0,len(s)-1;i<=j;{
        a,b:=s[i],s[j]  //s[i]s[j]是immutable
        if (s[i]>='A'&&s[i]<='Z')||(s[i]>=48&&s[i]<=57)||(s[i]>='a'&&s[i]<='z'){
            if s[i]>='A'&&s[i]<='Z'{
                a=a+32
            }
        }else {
            i++
            continue
        }
        if (s[j]>='A'&&s[j]<='Z')||(s[j]>=48&&s[j]<=57)||(s[j]>='a'&&s[j]<='z'){
            if s[j]>='A'&&s[j]<='Z'{
                b=b+32
            }
        }else{
            j--
            continue
        }
        if a!=b{
            return false
        }else {
            i++
            j--
        }
    }
    return true
}
举报

相关推荐

0 条评论