题目来源:
leetcode题目,网址:125. 验证回文串 - 力扣(LeetCode)
解题思路:
先根据要求处理字符串,将大写字母转化为小写字母,非小写字母及数字删除;然后遍历字符串,看其是否符合回文串的定义,证书第n个字符与倒数第n个字符一样。
解题代码:
class Solution {
public boolean isPalindrome(String s) {
String dealed=dealString(s);
return judge(dealed);
}
public static String dealString(String s){//将字符串处理为符合规则的短语
StringBuffer res=new StringBuffer();
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
if(Character.isUpperCase(c)){
res.append((char)(c-'A'+'a'));
}else if(Character.isLowerCase(c) || Character.isDigit(c)){
res.append(c);
}
}
return res.toString();
}
public static boolean judge(String s){//判断字符串s是否为回文串;根据测试用例,空串是回文串。
boolean res=true;
for(int i=0;i<s.length()/2;i++){
if(s.charAt(i) != s.charAt(s.length()-1-i)){
res=false;
break;
}
}
return res;
}
}
总结:
官方题解里面有种解法是直接在原字符串上进行判断,若碰到非字母及数字则跳过,效率更高。