Leetcode125. 验证回文串

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

Leetcode125. 验证回文串_第1张图片

解题思路:

我们直接在原字符串 sss 上使用双指针。在移动任意一个指针时,需要不断地向另一指针的方向移动,直到遇到一个字母或数字字符,或者两指针重合为止。也就是说,我们每次将指针移到下一个字母字符或数字字符,再判断这两个指针指向的字符是否相同。

 

代码如下:

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

    }
}

 

你可能感兴趣的:(算法,leetcode)