题目地址
https://leetcode-cn.com/problems/valid-palindrome/
题目描述:验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例:
例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
例 2:
输入: “race a car”
输出: false
解答
这道题属于阅读理解题,注意略去非字母/非数字的字符即可。
代码:
class Solution {
public:
void update( string& s, int i){
//将大写字母更新为小写字母
if( s[i] >= 'A' && s[i] <= 'Z')
s[i] = s[i] - 'A' + 'a';
}
bool isPalindrome(string s) {
for( int i = 0, j = s.size() - 1; i < j; ){
update( s, i), update( s, j);
if( !(s[i] >= 'a' && s[i] <= 'z') && !(s[i] >= '0' && s[i] <= '9')){ //不是字母,不是数字
i++;
continue;
}
if( !(s[j] >= 'a' && s[j] <= 'z') && !(s[j] >= '0' && s[j] <= '9')){
j--;
continue;
}
if( s[i] != s[j])
return false;
i++, j--;
}
return true;
}
};