LeetCode125.验证回文串Golang版
发布日期:2021-05-08 06:09:46 浏览次数:26 分类:精选文章

本文共 831 字,大约阅读时间需要 2 分钟。

LeetCode125.验证回文串Golang版

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

思路

分析题目,拿到的是一个字符串,需要先把字符串处理成只含有字母(ASCII码小写97~122和大写65~90)和数字(ASCII码 65~90)。然后使用首尾双指针,进行回文串的识别。

  • 把字符串转为字节数组,并把字符数组处理成只含有字母和数字
  • 使用首尾双指针,进行回文串的识别
  • 注意:这里介绍一种通过位运算,进行大小写字母转换的方法。

    代码

    func isPalindrome(s string) bool {    sByte := []byte(s)    index := 0    for i := 0; i < len(sByte); i++ {        // 处理大小写,将大写字母转换为小写字母        sByte[i] = sByte[i] | 32        // 筛选字母和数字        if (sByte[i] >= 97 && sByte[i] <= 122) || (sByte[i] >= 48 && sByte[i] <= 57) {            sByte[index] = sByte[i]            index++        }    }    // 处理后的字符串长度    k := index - 1    for j := 0; j < k; j++ {        if sByte[j] != sByte[k] {            return false        }        k--    }    return true}

    代码解释:首先将字符串转换为字节数组,并使用位运算将大写字母转换为小写字母。然后筛选出字母和数字,构建处理后的字符串。接着使用首尾双指针检查是否是回文串。

    上一篇:LeetCode136.只出现一次的数字Golang版
    下一篇:LeetCode122.买卖股票的最佳时机2Golang版

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年04月10日 18时59分13秒