islower(char c) 是否为小写字母
isuppper(char c) 是否为大写字母
isdigit(char c) 是否为数字
isalpha(char c) 是否为字母
isalnum(char c) 是否为字母或者数字
toupper(char c) 字母小转大
tolower(char c) 字母大转小
题目描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
结果
class Solution {
public:
bool isPalindrome(string s) {
transform(s.begin(), s.end(), s.begin(), ::tolower);
int len = s.size();
for(int i = 0, j = len-1; i <= j;)
{
if(i == j) return true;
if(s[i] >= '0' && s[i] <= '9' || s[i] >= 'a' && s[i] <= 'z')
{
if(s[j] >= '0' && s[j] <= '9' || s[j] >= 'a' && s[j] <= 'z')
{
if(s[i] == s[j]) { i++; j--; continue; }
else return false;
}
else
{
j--;
continue;
}
}
else
{
i++;
continue;
}
}
return true;
}
};