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;
}
}

浙公网安备 33010602011771号