Every day a leetcode
题目来源:125. 验证回文串
解法1:字符串翻转
先对原字符串进行筛选,只把字母和数字字符留下,然后全部转为大写,方便翻转后比较。
将字符串翻转后,若与原字符串相同,则为回文串。
相关函数:
代码:
class Solution {
public:
string reverse(string s)
{
int len=s.size();
for(int i=0;i<len/2;i++)
{
char temp=s[i];
s[i]=s[len-i-1];
s[len-i-1]=temp;
}
return s;
}
bool isPalindrome(string s) {
string str;
for(char c:s)
{
if(isalnum(c))
{
str+=toupper(c);
}
}
return str == reverse(str);
}
};
结果:
解法1:双指针
在筛选后的字符串中,利用双指针判断是否是回文串。
代码:
class Solution {
public:
bool isPalindrome(string s) {
string str;
for(char c:s)
{
if(isalnum(c))
{
str+=toupper(c);
}
}
int left=0;
int right=str.size()-1;
while(left<right)
{
if(str[left]!=str[right]) return false;
else
{
left++;
right--;
}
}
return true;
}
};
结果: