LeetCode 125 验证回文串
程序员文章站
2023-03-25 20:30:02
题目描述:方法(双指针):代码一:class Solution { public boolean isPalindrome(String s) { if(s == null){ return true; } int len = s.length(); StringBuffer sb = new StringBuffer(); for(char c : s.toCharArray()){...
题目描述:
方法(双指针):
代码一:
class Solution {
public boolean isPalindrome(String s) {
if(s == null){
return true;
}
int len = s.length();
StringBuffer sb = new StringBuffer();
for(char c : s.toCharArray()){
if(Character.isLetterOrDigit(c)){
sb.append(c);
}
}
int i = 0,j = sb.length()-1;
while(i<j){
if(Character.toLowerCase(sb.charAt(i)) != Character.toLowerCase(sb.charAt(j))){
return false;
}
i++;
j--;
}
return true;
}
}
结果;
代码二(优化,能少使用API就少使用,虽然代码简洁了很多,但是耗时一般都挺大的):
class Solution {
public boolean isPalindrome(String s) {
if(s == null){
return true;
}
String str = s.toLowerCase();
char[] ch = str.toCharArray();
int i = 0,j = ch.length - 1;
while(i < j){
if(ch[i]<'0'||(ch[i]>'9' && ch[i]<'a')||ch[i]>'z'){
i++;
continue;
}
if(ch[j]<'0'||(ch[j]>'9' && ch[j]<'a')||ch[j]>'z'){
j--;
continue;
}
if(ch[i] == ch[j]){
i++;
j--;
}else{
return false;
}
}
return true;
}
}
结果:
本文地址:https://blog.csdn.net/weixin_43752257/article/details/110245654