LeetCode-125 验证回文串

问题:

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:

输入: "race a car"
输出: false

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

分析:

问题很简单,前提是要知道三个api,再加上一个if -else if-else就可以解决问题,这个条件判断精妙在判断i所指的字符是否是数字或者字母,不是的话就一直++,且不会干扰到 j 的变化,直到是为止,然后判断j所指的是不是数字或者字母,不是也一直++,最后进行比较。

三个api:

1.char String.charAt(int index)将索引在字符串中对应的字符取出,并返回char,索引从0开始。

2.boolean isLetterOrDigit(char c)判断字符是否是字母或数字.

3. char toLowerCase(char c)将字母转换成小写,如果字符不是字母则原样输出。

代码:

class Solution {
public boolean isPalindrome(String s) {
if(s.length()==0)
{
return true;
}
int i = 0;
int j = s.length()-1;
while(i<j){
if(!Character.isLetterOrDigit(s.charAt(i))){
i++;
}else if(!Character.isLetterOrDigit(s.charAt(j))){
j--;
}else{
if(Character.toLowerCase(s.charAt(i))!=Character.toLowerCase(s.charAt(j))){
return false;
}
i++;
j--;
}
}
return true;

}
}

posted @ 2019-10-16 11:27  高鸣泽  阅读(95)  评论(0)    收藏  举报