• 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         
  • 相关阅读:
    「JSOI2015」套娃
    「JSOI2015」非诚勿扰
    「JSOI2015」送礼物
    「JSOI2015」子集选取
    「JSOI2015」salesman
    「JSOI2015」字符串树
    [2]树的DFS序
    hdu 6058 Kanade's sum
    UVALive 6907 Body Building
    CF617/E XOR and Favorite Number
  • 原文地址:https://www.cnblogs.com/ncznx/p/9170416.html
Copyright © 2020-2023  润新知