leetcode 125. 验证回文串
问题描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
问题分析
这道题难度为简单,主要记住三个函数:
- isdigit():数字返回非0,非数字返回0;
- isalpha():字母返回非0,非字母返回0;
- tolower/toupper: 字母的大小写转换.
代码
class Solution {
public:
bool isPalindrome(string s) {
int n = s.size();
if(n == 0)return true;
int left=0,right = n-1;
while(left < right)
{
if((isdigit(s[left])||isalpha(s[left]))&&(isdigit(s[right])||isalpha(s[right]))){
if(tolower(s[right]) == tolower(s[left]) ){
--right;++left;
}
else
return false;
}
else if(!(isdigit(s[left])||isalpha(s[left])))
++left;
else --right;
}
return true;
}
};