LeetCode – Valid Palindrome (Java)
来源:互联网 发布:淘宝哪些鞋店 编辑:程序博客网 时间:2024/05/01 09:05
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.
Thoughts
From start and end loop though the string, i.e., char array. If it is not alpha or number, increase or decrease pointers. Compare the alpha and numeric characters. The solution below is pretty straightforward.
Java Solution 1
public class Solution { public boolean isPalindrome(String s) { if(s == null) return false; if(s.length() < 2) return true; char[] charArray = s.toCharArray(); int len = s.length(); int i=0; int j=len-1; while(i<j){ char left = charArray[i]; char right = charArray[j]; while(i<len-1 && !isAlpha(left) && !isNum(left)){ i++; left = charArray[i]; } while(j>0 && !isAlpha(right) && !isNum(right)){ j--; right = charArray[j]; } if(i >= j) break; left = charArray[i]; right = charArray[j]; if(!isSame(left, right)){ return false; } i++; j--; } return true; } public boolean isAlpha(char a){ if((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z')){ return true; }else{ return false; } } public boolean isNum(char a){ if(a >= '0' && a <= '9'){ return true; }else{ return false; } } public boolean isSame(char a, char b){ if(isNum(a) && isNum(b)){ return a == b; }else if(Character.toLowerCase(a) == Character.toLowerCase(b)){ return true; }else{ return false; } }}
Java Solution 2 – Remove Non-Letter First
This solution removes the special characters first. (Thanks to Tia)
public boolean isPalindrome(String s) {s = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase(); int len = s.length();if (len < 2)return true; Stack<Character> stack = new Stack<Character>(); int index = 0;while (index < len / 2) {stack.push(s.charAt(index));index++;} if (len % 2 == 1)index++; while (index < len) {if (stack.empty())return false; char temp = stack.pop();if (s.charAt(index) != temp)return false;elseindex++;} return true;}
- LeetCode – Valid Palindrome (Java)
- [Leetcode] Valid Palindrome (Java)
- 【Leetcode】Valid Palindrome JAVA
- [LeetCode][Java] Valid Palindrome
- 【leetcode】Valid Palindrome【java】
- leetcode:Valid Palindrome 【Java】
- LeetCode 125 : Valid Palindrome (Java)
- Leetcode: 125. Valid Palindrome(JAVA)
- 【leetcode】125. Valid Palindrome【java】
- [LeetCode] 125. Valid Palindrome java
- LeetCode:Valid Palindrome双指针 java版
- LeetCode中的Valid Palindrome用Java实现
- [leetcode]125. Valid Palindrome@Java解题报告
- [Leetcode] Valid Palindrome
- Leetcode: Valid Palindrome
- leetcode 55: Valid Palindrome
- [LeetCode] Valid Palindrome
- 【leetcode】Valid Palindrome
- js中获取时间new Date()详细介绍
- 网站如何集成支付宝支付接口
- zip解压中文乱码解决与使用ant实现zip解压缩
- 批量修改一个文件夹下所有的文件后缀
- svn进行迁移
- LeetCode – Valid Palindrome (Java)
- Error: no `server' JVM at `C:\Program Files\Java\jre6\bin\server\jvm.dll'
- 物极必反
- 汇编语法
- 关于文件保护路径
- 编程解决Linux下解压zip乱码问题
- test
- hql多表查询
- 官方通话包个红包