summaryrefslogtreecommitdiff
path: root/top-interview-questions/easy/strings/05_valid_palindrome.cc
diff options
context:
space:
mode:
Diffstat (limited to 'top-interview-questions/easy/strings/05_valid_palindrome.cc')
-rw-r--r--top-interview-questions/easy/strings/05_valid_palindrome.cc30
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 @@
1class Solution {
2public:
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};