首页 > 代码库 > LeetCode: Valid Palindrome 解题报告
LeetCode: Valid Palindrome 解题报告
Valid Palindrome
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.
SOLUTION 1:
左右指针往中间判断。注意函数: toLowerCase
1 /* 2 SOLUTION 1: Iterator. 3 */ 4 public boolean isPalindrome1(String s) { 5 if (s == null) { 6 return false; 7 } 8 9 int len = s.length();10 11 boolean ret = true;12 13 int left = 0;14 int right = len - 1;15 16 String sNew = s.toLowerCase();17 18 while (left < right) {19 // bug 1: forget a )20 while (left < right && !isNumChar(sNew.charAt(left))) {21 left++;22 }23 24 while (left < right && !isNumChar(sNew.charAt(right))) {25 right--;26 }27 28 if (sNew.charAt(left) != sNew.charAt(right)) {29 return false;30 }31 32 left++;33 right--;34 }35 36 return true;37 }38 39 public boolean isNumChar(char c) {40 if (c <= ‘9‘ && c >= ‘0‘ || c <= ‘z‘ && c >= ‘a‘ || c <= ‘Z‘ && c >= ‘A‘) {41 return true;42 }43 44 return false;45 }
SOLUTION 2:
引自http://blog.csdn.net/fightforyourdream/article/details/12860445 的解答,会简单一点儿。不用判断边界。
左右指针往中间判断。新技能GET: isLetterOrDigit
1 /* 2 SOLUTION 2: Iterator2. 3 */ 4 public boolean isPalindrome(String s) { 5 if (s == null) { 6 return false; 7 } 8 9 int len = s.length();10 11 boolean ret = true;12 13 int left = 0;14 int right = len - 1;15 16 String sNew = s.toLowerCase();17 18 while (left < right) {19 // bug 1: forget a )20 if (!Character.isLetterOrDigit(sNew.charAt(left))) {21 left++;22 // bug 2: Line 67: error: cannot find symbol: method isLetterOrDigital(char) 23 } else if (!Character.isLetterOrDigit(sNew.charAt(right))) {24 right--;25 } else if (sNew.charAt(left) != sNew.charAt(right)) {26 return false;27 } else {28 left++;29 right--;30 }31 }32 33 return true;34 }
GITHUB:
https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/string/IsPalindrome_2014_1229.java
LeetCode: Valid Palindrome 解题报告
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。