給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。
說明:本題中,我們將空字符串定義爲有效的迴文串。
示例 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;}};