双指针
class Solution {
public:
bool isPalindrome(string s) {
int n=s.size();
if(n==0)
return true;
int i=0,j=n-1;
while(i<j)
{
while(!(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'||s[i]>='0'&&s[i]<='9')&&i<j)
i++;
while(!(s[j]>='a'&&s[j]<='z'||s[j]>='A'&&s[j]<='Z'||s[j]>='0'&&s[j]<='9')&&i<j)
j--;
if(s[i]>='A'&&s[i]<='Z')
s[i]=s[i]-'A'+'a';
if(s[j]>='A'&&s[j]<='Z')
s[j]=s[j]-'A'+'a';
if(s[i]!=s[j])
return false;
i++;
j--;
}
return true;
}
};
本文介绍了一种使用双指针技术判断字符串是否为回文的有效方法。该方法通过忽略非字母数字字符并进行大小写不敏感的比较来确定输入字符串是否为回文。通过两个指针从字符串两端向中间遍历,实现高效验证。
433

被折叠的 条评论
为什么被折叠?



