diff options
Diffstat (limited to 'top-interview-questions/easy/strings/05_valid_palindrome.cc')
-rw-r--r-- | top-interview-questions/easy/strings/05_valid_palindrome.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/top-interview-questions/easy/strings/05_valid_palindrome.cc b/top-interview-questions/easy/strings/05_valid_palindrome.cc new file mode 100644 index 0000000..1b4ca6f --- /dev/null +++ b/top-interview-questions/easy/strings/05_valid_palindrome.cc | |||
@@ -0,0 +1,30 @@ | |||
1 | class Solution { | ||
2 | public: | ||
3 | bool IsAlphaNum(char c) { | ||
4 | return | ||
5 | (('a' <= c) && (c <= 'z')) || | ||
6 | (('A' <= c) && (c <= 'Z')) || | ||
7 | (('0' <= c) && (c <= '9')); | ||
8 | } | ||
9 | |||
10 | void Transform(string& s) { | ||
11 | size_t j = 0; | ||
12 | for (size_t i = 0; i < s.size(); ++i) { | ||
13 | if (IsAlphaNum(s[i])) { | ||
14 | s[j] = std::tolower(s[i]); | ||
15 | j++; | ||
16 | } | ||
17 | } | ||
18 | s.resize(j); | ||
19 | } | ||
20 | |||
21 | bool isPalindrome(string s) { | ||
22 | Transform(s); | ||
23 | for (size_t i = 0; i < s.size()/2; ++i) { | ||
24 | if (s[i] != s[s.size()-i-1]) { | ||
25 | return false; | ||
26 | } | ||
27 | } | ||
28 | return true; | ||
29 | } | ||
30 | }; | ||