zoukankan      html  css  js  c++  java
  • 0125. Valid Palindrome (E)

    Valid Palindrome (E)

    题目

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

    Note: For the purpose of this problem, we define empty string as valid palindrome.

    Example 1:

    Input: "A man, a plan, a canal: Panama"
    Output: true
    

    Example 2:

    Input: "race a car"
    Output: false
    

    题意

    忽略给定字符串中的非字母数字的字符,判断该字符串是否为回文串(忽略大小写)。

    思路

    Two pointers。


    代码实现

    Java

    class Solution {
        public boolean isPalindrome(String s) {
            if (s.isEmpty()) {
                return true;
            }
    
            int i = 0, j = s.length() - 1;
            while (i < j) {
                while (i < j && !isAlphanumeric(s.charAt(i))) {
                    i++;
                }
                while (i < j && !isAlphanumeric(s.charAt(j))) {
                    j--;
                }
    
                char cI = s.charAt(i), cJ = s.charAt(j);
                cI = cI >= 'a' && cI <= 'z' ? (char) (cI - 32) : cI;
                cJ = cJ >= 'a' && cI <= 'z' ? (char) (cJ - 32) : cJ;
    
                if (cI != cJ) {
                    return false;
                }
                
                i++;
                j--;
            }
    
            return true;
        }
    
        private boolean isAlphanumeric(char c) {
            return c >= '0' && c <= '9' || c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
        }
    }
    

    JavaScript

    /**
     * @param {string} s
     * @return {boolean}
     */
    var isPalindrome = function (s) {
      let left = 0, right = s.length - 1
      s= s.toLowerCase()
      while (left < right) {
        if (!/[a-z0-9]/.test(s[left])) {
          left++
        } else if (!/[a-z0-9]/.test(s[right])) {
          right--
        } else if (s[left++] !== s[right--]) {
          return false
        }
      }
      return true
    }
    
  • 相关阅读:
    Java生产环境线上栈故障排查问题(COPY)
    Java集合HashMap,List底层
    图算法--染色法判定二图
    图算法--kruskal
    图算法--最小生成树prim
    图算法--判负环
    图算法--floyd
    图算法--spfa
    图算法--bellman-ford (nm)
    图算法--堆优化版dijkstra
  • 原文地址:https://www.cnblogs.com/mapoos/p/13429650.html
Copyright © 2011-2022 走看看