File tree 1 file changed +43
-0
lines changed
1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {string } s
3
+ * @return {boolean }
4
+ */
5
+ var isPalindrome = function ( s ) {
6
+ // 1. Create left and right pointer
7
+ let l = 0 ;
8
+ let r = s . length - 1 ;
9
+ // 2. Iterate while loop with l<r condition
10
+ while ( l < r ) {
11
+ // 3. Check character with left pointer is alphanumeric character or not
12
+ if (
13
+ ( s [ l ] >= "a" && s [ l ] <= "z" ) ||
14
+ ( s [ l ] >= "A" && s [ l ] <= "Z" ) ||
15
+ ( s [ l ] >= "0" && s [ l ] <= "9" )
16
+ ) {
17
+ // 4. Check character with right pointer is alphanumeric character or not
18
+ if (
19
+ ( s [ r ] >= "a" && s [ r ] <= "z" ) ||
20
+ ( s [ r ] >= "A" && s [ r ] <= "Z" ) ||
21
+ ( s [ r ] >= "0" && s [ r ] <= "9" )
22
+ ) {
23
+ // 5. Compare left and right pointer character
24
+ if ( s [ l ] . toLowerCase ( ) !== s [ r ] . toLowerCase ( ) ) {
25
+ return false ;
26
+ } else {
27
+ l ++ ;
28
+ r -- ;
29
+ }
30
+ // If not, go to next location for right pointer
31
+ } else r -- ;
32
+
33
+ // If not, go to next location for left pointer
34
+ } else l ++ ;
35
+ }
36
+ return true ;
37
+ } ;
38
+
39
+ // TC: O(n)
40
+ // SC: O(n)
41
+
42
+ console . log ( isPalindrome ( "A man, a plan, a canal: Panama" ) ) ; //true
43
+ console . log ( isPalindrome ( "race a car" ) ) ; //false
You can’t perform that action at this time.
0 commit comments