題目: 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
// fast IO
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;
}
};