29.验证回文串
题目内容:
代码及思路:
1.在字符串左右两边设置两个指针,一次进行比较
2.由于不考虑大小写,因此我将字符串里的字母统一换成了小写以便进行判断
class Solution {
public:
void transform(string& s)
{
for (int i = 0; s[i]; i++)
{
if (s[i] >= 'A'&&s[i] <= 'Z')
s[i] += 32;
}
}
bool Testpalindrome(string s)
{
//设置左右两个指针进行比较
transform(s);
int left = 0;
int right = s.length() - 1;
while (left < right)
{
//因为只考虑子母河数字字符,且可以忽略子母的大小写,则对字符范围进行划分
if (!(s[left] >= 'a'&&s[left] < 'z' || s[left] >= '0'&&s[left] <= '9'&&left < right))
left++;
else if (!(s[right] >= 'a'&&s[right] < 'z' || s[right] >= '0'&&s[right] <= '9'&&left < right))
right--;
else if (s[left] != s[right])
return false;
else
{
left++;
right--;
}
}
return true;
}
bool isPalindrome(string s) {
return Testpalindrome(s);
}
};