题目链接:125. 验证回文串

题解:

简单回文串的验证!

题目简述:

验证一个字符串是不是回文串,只考虑数字和大小写字母!

题解:

简单双指针:

  • 一个指针从前向后,一个指针从后向前
  • 遇到不少字母和数字则向后或向前移动
  • 由于题目忽略大小写的存在,我们将其全部转化为小写字母比较即可!

注意:

  • tolower() 和 toupper():位于cctypectype.h头文件

时间复杂度O(n)

AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
bool check(char c){
return c >= '0' && c <= '9' || c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
}
bool isPalindrome(string s) {
for(int i = 0, j = s.size() - 1; i < j; i++, j--){
while(i < j && !check(s[i])) i++;
while(i < j && !check(s[j])) j--;
if(i < j && tolower(s[i]) != tolower(s[j])) return false;
}
return true;
}
};