题目描述:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama" Output: true
Example 2:
Input: "race a car" Output: false
思路:题目只考虑字母或者数字,不考虑大小写和标点。可用内置函数isalnum(i)判断是否字符串第i位是否是字母或数字,处理大小写不同的情况时,可统一转为小写,用函数tolower()转换。
代码:C++
class Solution {
public:
bool isPalindrome(string s) {
int start=0, end=s.size()-1;
while(start<end)
{
if(!(isalnum(s[start])))//判断是否为数字or字母
start++;
else if(!(isalnum(s[end])))
end--;
else
{ if(tolower(s[start++])!=tolower(s[end--]))//统一转为小写
return false;}
}
return true;
}
};