leetcode 125. Valid Palindrome
题目内容
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example:
Input: "A man, a plan, a canal: Panama"
Output: true
Example 2:
Input: "race a car"
Output: false
分析过程
- 题目归类:
正则表达式 - 题目分析:
本题主要考的是 java 的正则表达式的应用,顺便复习正则表达式的方法。
知识点:正则表达式
在Java中,使用pattern 来构建正则表达式,使用 matcher 来处理正则表达式
Pattern.compile("[^0-9A-Za-Z]").matcher(s).replaceAll("");
或者直接
s.replaceAll("[^0-9A-Za-Z]","");
- 边界分析:
- 空值分析
- 循环边界分析
- 方法分析:
- 数据结构分析
- 状态机
- 状态转移方程
- 最优解
- 测试用例构建
代码实现
import java.util.regex.*;
import java.util.*;
class Solution {
public boolean isPalindrome(String s) {
if(s == null)
return true;
s = s.replaceAll("[^0-9a-zA-Z]","");
int i = 0;
int j = s.length()-1;
while(i<j){
if(Character.toLowerCase(s.charAt(i)) == Character.toLowerCase(s.charAt(j))){
i++;
j--;
}else{
return false;
}
}
return true;
}
}