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

mac2026-08-15  5

题目: 题解:

双指针法使用首尾指针向中间移动,若遇到标点符号,我们需要使用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; } };
最新回复(0)