題目: LeetCode - 125. Valid Palindrome
題目說明
給一個 String,檢查此字串是否為回文。
解題思路
使用雙指針即可,使用 isalnum()
判斷字符是否為數字或英文字母,使用 tolower()
將字母轉為小寫。
參考解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| static auto __ = []() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); return 0; }(); class Solution { public: bool isPalindrome(string s) { int i = 0, j = s.size() - 1; while(i <= j) { if(isalnum(s[i]) && isalnum(s[j])) { if(tolower(s[i]) != tolower(s[j])) return false; ++i, --j; } else { if(!isalnum(s[i])) ++i; if(!isalnum(s[j])) --j; } } return true; } };
|