[LeetCode] #125 验证回文串

这篇具有很好参考价值的文章主要介绍了[LeetCode] #125 验证回文串。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给定一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。文章来源地址https://www.toymoban.com/news/detail-575028.html

#include <iostream>
using namespace std;
bool isPalindrome(const string &s);

int main()
{
    string str = "hello wzn nzw ,olleh";
    bool res = isPalindrome(str);
    if (res) cout << "true" << endl;
    else cout << "false" << endl;
    return 0;
}


bool isPalindrome(const string &s)
{
    int i = 0;
    int j = s.size() - 1;
    while (i < j)
    {
        //从左往右找寻字母数字字符的下标
        while (!((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= '0' && s[i] <= '9')))
        {
            i++;
            if (i >= j) return true;
        }
        //从右往左找寻字母数字字符的下标
        while (!((s[j] >= 'a' && s[j] <= 'z') || (s[j] >= 'A' && s[j] <= 'Z') || (s[j] >= '0' && s[j] <= '9')))
        {
            j--;
            if (i >= j) return true;
        }
        //判断是否回文
        if (s[i] >= '0' && s[i] <= '9')
        {
            if (s[i] != s[j]) return false;
        }
        else if (s[i] >= 'a' && s[i] <= 'z')
        {
            if (s[i] != s[j] && s[i] != (s[j] + 32)) return false;
        }
        else if (s[i] >= 'A' && s[i] <= 'Z')
        {
            if (s[i] != s[j] && s[i] != (s[j] - 32)) return false;
        }
        i++;
        j--;
    }
    return true;
}

到了这里,关于[LeetCode] #125 验证回文串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 125.验证回文串

    目录 一、题目 二、代码 125. 验证回文串 - 力扣(LeetCode)

    2024年02月14日
    浏览(63)
  • c++:string相关的oj题(415. 字符串相加、125. 验证回文串、541. 反转字符串 II、557. 反转字符串中的单词 III)

    传送门 首先,定义两个指针 index1 和 index2 分别指向两个输入字符串的最后一位,用来从后往前遍历字符串。 然后定义一个变量 next 用来表示进位,初始化为 0。 接下来使用一个循环来遍历两个字符串,直到 index1 和 index2 都小于 0。在循环中,每次取出 index1 和 index2 对应位置

    2024年01月23日
    浏览(59)
  • leetcode 9 回文数

     

    2024年02月17日
    浏览(31)
  • leetcode-5-最长回文串

    给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2: 输入:s = “cbbd” 输出:“bb” 提示: 1 = s.length = 1000 s 仅由数字和

    2024年02月12日
    浏览(24)
  • Leetcode 409. 最长回文串

    Leetcode 409. 最长回文串

    2024年02月07日
    浏览(33)
  • 【Leetcode】 131. 分割回文串

    给你一个字符串 s ,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入 : s = \\\"aab\\\" 输出 : [[\\\"a\\\",\\\"a\\\",\\\"b\\\"],[\\\"aa\\\",\\\"b\\\"]] 示例 2 : 输入 : s = \\\"a\\\" 输出 : [[\\\"a\\\"]] 提示: s 仅由小写英文字母组成

    2024年02月07日
    浏览(42)
  • leetcode 647. 回文子串

    题目链接:leetcode 647 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不

    2024年02月05日
    浏览(38)
  • LeetCode刷题 | 647. 回文子串、516. 最长回文子序列

    给你一个字符串  s  ,请你统计并返回这个字符串中  回文子串  的数目。 回文字符串  是正着读和倒过来读一样的字符串。 子字符串  是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

    2024年02月12日
    浏览(49)
  • leetcode 5 最长回文子串

    题目 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 解析 这道题和之前的那道回文的很像:647回文子串,求个数,解法还是动态

    2024年02月10日
    浏览(58)
  • 【LeetCode】5 . 最长回文子串

    思想 「中心扩散法」的基本思想是:遍历每一个下标,以这个下标为中心,利用「回文串」中心对称的特点,往两边扩散,看最多能扩散多远。 枚举「中心位置」时间复杂度为 O(N),从「中心位置」扩散得到「回文子串」的时间复杂度为 O(N),因此时间复杂度可以降到 O(N 2

    2024年02月10日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包