[双指针][字符串]leetcode125:验证回文串(easy)
程序员文章站
2022-03-20 11:39:02
...
题目:
题解:
- 双指针法
- 使用首尾指针向中间移动,若遇到标点符号,我们需要使用
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;
}
};