leetcode链接:https://leetcode.cn/problems/valid-palindrome/
思路:
这道题只判断字符串中的字母与数字是否是回文。虽然小写大写字母可以互相转换,但是里面是含有数字字符的,所以先统一,把字符串中所有的字母都转换成大写或者小写,然后一个下标从左开始寻找一个下标从右开始寻找匹配的字符,直到都满足在判断是否相等若一直是相等则是回文,否则不是回文。
代码:
class Solution {
public:
bool isPalindrome(string s) {
// 全部统一为小写
for (auto& val : s) {
if (isupper(val)) {
val += 32;
}
}
int left = 0;
int right = s.size() - 1;
while (left < right) {
while (left < right && !isalnum(s[left])) {
left++;
}
while (left < right && !isalnum(s[right])) {
right--;
}
// 判断是否相等
if (s[left] == s[right]) {
left++;
right--;
continue;
}
return false;
}
return true;
}
};