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? This is a good question to ask during an interview.

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

 

題解

 這道題的幾個點,

一就是alphanumeric characters and ignoring cases,字母和數字,忽略大小寫。

二就是考慮空字符串是否為回文,最好在面試時候問下面試官,這里是認為空字符串是回文。

因為忽略大小寫,所以就統一為大寫。

然后就判斷當前檢查字符是否符合范圍,否則大小指針挪動。

如果發現有大小指針指向的值有不同的,就返回false,否則,繼續檢查。

最后返回true。

代碼如下:

 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         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM