本篇博客会讲解力扣“125. 验证回文串”的解题思路,这是题目链接。
验证回文串,我们最容易想到的思路就是,使用两个下标left和right,分别表示字符串的第一个字符和最后一个字符。接着,让两个下标不断向中间移动,遇到非数字且非字母字符就跳过,遇到数字或字母字符就停下来,判断一下对应的两个字符是否相同,若相同,就让两个下标继续向中间移动;若不相同,则说明该字符串不是回文串。
判断是否是数组或字母字符可以调用isalnum函数,大写字母转小写字母可以调用tolower函数。
bool isPalindrome(char * s){
int left = 0;
int right = strlen(s) - 1;
while (left < right)
{
// 跳过所有非数字或字母字符
while (left < right && !isalnum(s[left]))
{
++left;
}
while (left < right && !isalnum(s[right]))
{
--right;
}
// 若left和right没有交错就停了下来,判断左右字符是否相同
if (left < right)
{
if (tolower(s[left]) != tolower(s[right]))
{
return false;
}
else
{
// 继续比较其余字符
++left;
--right;
}
}
}
// left和right已经交错了
return true;
}
总结
遇到跟回文串有关的题目时,一般可以使用双下标的方法。
感谢大家的阅读!