给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:输入:"A man, a plan, a canal: Panama"输出: true
示例 2:输入:"race a car"输出: false
示例 3:输入:"0P"输出: false
ac代码
常规解题
字符串转全小写
遍历循环判断
transform + tolower + 迭代循环
classSolution{public:boolisPalindrome(string s){transform(s.begin(),s.end(),s.begin(),::tolower);int l =0, r = s.length()-1;while(l < r){if(!((s[l]<='z'&& s[l]>='a')||(s[l]<='9'&& s[l]>='0')))++l;elseif(!((s[r]<='z'&& s[r]>='a')||(s[r]<='9'&& s[r]>='0')))--r;elseif(s[l]!= s[r])returnfalse;else{++l;--r;}}returntrue;}};
transform + tolower + isalnum
classSolution{public:boolisPalindrome(string s){transform(s.begin(),s.end(),s.begin(),::tolower);int l =0, r = s.length()-1;while(l < r){if(!isalnum(s[l]))++l;elseif(!isalnum(s[r]))--r;elseif(s[l]!= s[r])returnfalse;else{++l;--r;}}returntrue;}};