Leetcode - 125. 验证回文串

解题思路参考代码中的注释:
class Solution {
    public boolean isPalindrome(String s) {

        // 大写转小写,并将字符串转成字符数组,方便操作
        char[] arr = s.toLowerCase().toCharArray();
        
        // 分别从字符串的最左端和最右端开始向中间遍历
        // 如果左指针指向的字符和右指针指向的字符不同,说明该字符串不是回文
        int start = 0, end = arr.length - 1;
        while (start < end) {
            
            // 忽略无关字符
            if (!isValidChar(arr[start])) {
                start++;
                continue;
            }
            
            // 忽略无关字符
            if (!isValidChar(arr[end])) {
                end--;
                continue;
            }
            
            // 如果start和end指向的字符不相等,则可以断定该字符串不是回文
            if (arr[start++] != arr[end--]) {
                return false;
            }
        }
        return true;
    }
    
    private static boolean isValidChar(char c) {
        return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z');
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务