欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[双指针][字符串]leetcode125:验证回文串(easy)

程序员文章站 2022-03-20 11:39:02
...

题目:
[双指针][字符串]leetcode125:验证回文串(easy)
题解:

  • 双指针法
  • 使用首尾指针向中间移动,若遇到标点符号,我们需要使用isalnum()判断跳过即可;若遇到大写字母,我们需要使用tolower()转换为小写字符即可,这个函数对于数字和小写字母不做转换仅仅针对大写字母。

代码如下:

class Solution {
public:
    //题解:双指针法
    bool isPalindrome(string s) {
        if(s.empty())return true;
        
        int i=0,j=s.size()-1;
        while(i<j)
        {
            //isalnum(c):当c为字母或数字时为真;否则就是为标点符号,那我们需要跳过这个字符
            while(i<j&&!isalnum(s[i]))i++;
            while(i<j&&!isalnum(s[j]))j--;
            
            //tolower(c):如果c为大写字母就输出其对应的小写字母,否则就原样输出c
            if(tolower(s[i++])!=tolower(s[j--]))return false;
        }
        return true;
    }
};