titan2400

Valid Palindrome - LeetCode

Oct 29th, 2025
957
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.06 KB | Source Code | 0 0
  1. // Valid Palindrome - https://leetcode.com/problems/valid-palindrome/
  2.  
  3. class Solution {
  4.  
  5.     // Time Complexity: O(n)
  6.     // Space Complexity: O(n)
  7.     // public boolean isPalindrome(String s) {
  8.     //     s = s.toLowerCase();
  9.     //     StringBuilder sb = new StringBuilder();
  10.  
  11.     //     for(int i = 0; i < s.length(); i++) {
  12.     //         Character c = s.charAt(i);
  13.  
  14.     //         if(Character.isLetterOrDigit(c)) {
  15.     //             sb.append(c);
  16.     //         }
  17.     //     }
  18.  
  19.     //     String toCheck = sb.toString();
  20.     //     int i = 0, j = toCheck.length() - 1;
  21.  
  22.     //     while(i < j) {
  23.     //         if(toCheck.charAt(i) != toCheck.charAt(j)) {
  24.     //             return false;
  25.     //         }
  26.     //         i++;
  27.     //         j--;
  28.     //     }
  29.  
  30.     //     return true;
  31.     // }
  32.  
  33.  
  34.     // Time Complexity: O(n)
  35.     // Space Complexity: O(n)
  36.     // Similar to above but compact code
  37.     // public boolean isPalindrome(String s) {
  38.     //     StringBuilder sb = new StringBuilder();
  39.     //     for(int i = 0; i < s.length(); i++) {
  40.     //         Character c = s.charAt(i);
  41.  
  42.     //         if(Character.isLetterOrDigit(c)) {
  43.     //             sb.append(Character.toLowerCase(c));
  44.     //         }
  45.     //     }
  46.  
  47.     //     return sb.toString().equals(sb.reverse().toString());
  48.     // }
  49.  
  50.     // Two pointers optimized
  51.     // Time Complexity: O(n)
  52.     // Space Complexity: O(1)
  53.     public boolean isPalindrome(String s) {
  54.         int l = 0, r = s.length() - 1;
  55.  
  56.         while (l < r) {
  57.             while (l < r && !alphaNum(s.charAt(l))) {
  58.                 l++;
  59.             }
  60.             while (r > l && !alphaNum(s.charAt(r))) {
  61.                 r--;
  62.             }
  63.             if (Character.toLowerCase(s.charAt(l)) != Character.toLowerCase(s.charAt(r))) {
  64.                 return false;
  65.             }
  66.             l++; r--;
  67.         }
  68.         return true;
  69.     }
  70.  
  71.     public boolean alphaNum(char c) {
  72.         return (c >= 'A' && c <= 'Z' ||
  73.                 c >= 'a' && c <= 'z' ||
  74.                 c >= '0' && c <= '9');
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment