第125题:验证回文串

一. 问题描述

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

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

示例 1:

输入: "A man, a plan, a canal: Panama"

输出: true

示例 2:

输入: "race a car"

输出: false

二. 解题思路

本题思路:采用双指针进行求解。

步骤一:将字符串中的大写字母全部转换成小写字母得到ss。

步骤二:创建两个指针一个指向ss的头部,一个指向ss的尾部。

步骤三:双指针遍历ss字符串。当遇到非字母或数字则跳过,否则进行比较两个指针指向的数值,若相同,first++,last--。否则返回false。

步骤四:遍历完ss后,则返回true。

三. 执行结果

执行用时 :7 ms, 在所有 java 提交中击败了65.41%的用户

内存消耗 :37.9 MB, 在所有 java 提交中击败了86.62%的用户

四. Java代码

class Solution {
    public boolean isPalindrome(String s) {
        String ss=s.toLowerCase();
        int first=0;
        int last=ss.length()-1;
        while(first<last) {
            if((ss.charAt(first)>='0'&&ss.charAt(first)<='9')||(ss.charAt(first)>='a'&&ss.charAt(first)<='z')){
                if((ss.charAt(last)>='0'&&ss.charAt(last)<='9')||(ss.charAt(last)>='a'&&ss.charAt(last)<='z')) {
                    if(ss.charAt(first)==ss.charAt(last)) {
                        first++;
                        last--;
                    }else {
                        return false;
                    }
                }else {
                    last--;
                    continue;
                }
            }else {
                first++;
                continue;
            }
        }   
        return true;
    }
}
原文地址:https://www.cnblogs.com/xiaobaidashu/p/11896229.html