首页 > 代码库 > leetcode 125. Valid Palindrome ----- java
leetcode 125. Valid Palindrome ----- 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.
判读一个字符串是否是回文字符串(只判断期中的字符和数字)。
1、两个栈,从前向后和从后向前,然后判断两个栈是否相同。
public class Solution { public boolean isPalindrome(String s) { Stack stack1 = new Stack<Character>(); Stack stack2 = new Stack<Character>(); s = s.toLowerCase(); char[] word = s.toCharArray(); int len = s.length(); for( int i = 0;i<len;i++){ if( (word[i] >= ‘0‘ && word[i] <= ‘9‘) || (word[i]>=‘a‘ && word[i]<=‘z‘) ) stack1.push(word[i]); if( (word[len-1-i] >= ‘0‘ && word[len-1-i] <= ‘9‘) || (word[len-1-i]>=‘a‘ && word[len-1-i]<=‘z‘) ) stack2.push(word[len-1-i]); } return stack1.equals(stack2); } }
2、直接用两个指针记录left和right即可。
public class Solution { public boolean isPalindrome(String s) { char[] word = s.toLowerCase().toCharArray(); int len = s.length(); int left = 0,right = len-1; while( left < right ){ if( !((word[left] >= ‘0‘ && word[left] <= ‘9‘) || (word[left]>=‘a‘ && word[left]<=‘z‘ )) ) left++; else if( !((word[right] >= ‘0‘ && word[right] <= ‘9‘) || (word[right]>=‘a‘ && word[right]<=‘z‘ )) ) right--; else if( word[left] == word[right]){ left++; right--; }else return false; } return true; } }
leetcode 125. Valid Palindrome ----- java
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。