• Valid Palindrome LeetCode Java


    描述
    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring
    cases.
    For example,
    ”A man, a plan, a canal: Panama” is a palindrome.
    ”race a car” is not a palindrome.
    Note: Have you consider that the string might be empty? �is is a good question to ask during an
    interview.
    For the purpose of this problem, we define empty string as valid palindrome.

    分析
    去标点符号,看是不是回文
    代码

     1 public class ValidPalindrome {
     2     public static void main(String[] args) {
     3         String str= "A man, a plan, a canal: Panama";
     4         System.out.println(validPalindrome(str));
     5     }
     6     public static boolean validPalindrome(String str) {
     7         if (str=="") 
     8             return true;
     9 //        String regex= "/[^\u4e00-\u9fa5\w]/g";
    10         String regex= "[\p{Punct}\p{Space}]+"; //去标点符号的正则表达式, 但不能去“”和中文标点
    11         str=str.replaceAll(regex,"");
    12         String strlow=str.toLowerCase();
    13 //        return strlow;
    14         char[] ch=strlow.toCharArray();
    15     
    16         for(int i=0;i<ch.length;i++) {
    17             int j=ch.length-1-i;
    18             if(i<=j) {
    19                if(ch[i]==ch[j]) {
    20                    continue;
    21                }else {
    22                    return false;
    23                }
    24             }
    25         }
    26         return true;
    27     }
    28 }

    方法2(转载)

    不用正则

     1 public static boolean isPalindrome(String s) {
     2                       if(s.length()==0)
     3                           return true;
     4                       
     5                       s = s.toUpperCase();
     6                       int low1 = 'A', high1 = 'Z';
     7                       int low2 = '0', high2 = '9';
     8                       int low = 0, high = s.length()-1;
     9                       
    10                      while(low < high){
    11                          if((s.charAt(low)<low1||s.charAt(low)>high1)
    12                              && (s.charAt(low)<low2||s.charAt(low)>high2)){
    13                                  low++;
    14                                  continue;
    15                              }
    16                              
    17                          if((s.charAt(high)<low1||s.charAt(high)>high1)
    18                              && (s.charAt(high)<low2||s.charAt(high)>high2)){
    19                                  high--;
    20                                  continue;
    21                              }
    22                          if(s.charAt(low) == s.charAt(high)){
    23                              low++;
    24                              high--;
    25                          }else
    26                              return false;
    27                      }
    28                      return true;
    29                  }
    30         
  • 相关阅读:
    什么是DI
    什么是IOC?
    什么是spring框架?spring框架到底有什么用?spring框架到底做了些什么?
    JSP中动态include和静态include的区别?
    jsp静态include和动态include区别
    Request对象的主要方法有哪些?
    如何防止重复提交
    JSTL 标签大全详解
    序列化对象为xml字符串
    ASP.NET获取客户端的相关信息
  • 原文地址:https://www.cnblogs.com/ncznx/p/9170416.html
Copyright © 2020-2023  润新知