验证回文字符串

作者: coder_flag | 来源:发表于2018-09-12 22:37 被阅读2次

原题:

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

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

示例 1:

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

示例 2:

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

解法1:

思路:先去除标点符号,以及空格,把字符串都变成小写,因为后面需要字符串前后对比;转换成字符数组,首尾开始往中间依次对比,相同则是回文。

class Solution {
   public  boolean isPalindrome(String s) {
        s=s.replaceAll("[\\pP\\p{Punct}]" , "");
        s=s.replaceAll(" +" , "");
        s=s.toLowerCase();
        char[] array=s.toCharArray();
        int n=array.length;
        for(int i=0;i<n/2;i++){
            if(array[i]!=array[n-1-i]){
                return false;
            }
        }
        return true;
    }
}

解法2:

思路:这题的重点就是去除这些标点符号的干扰,下面这个算法就是写一个函数判断是否为数字或字母,在前后对比时,先判断是否为数字或字母,是就舍弃移位。这样做就省去了对字符串的各种操作了。

class Solution {
public:
    bool isPalindrome(string s) {
        int left = 0, right = s.size() - 1 ;
        while (left < right) {
            if (!isAlphaNum(s[left])) ++left;
            else if (!isAlphaNum(s[right])) --right;
            else if ((s[left] + 32 - 'a') %32 != (s[right] + 32 - 'a') % 32) return false;
            else {
                left++;
                right--;
            }
        }
        return true;
    }
    bool isAlphaNum(char &c) {
        if (c >= 'a' && c <= 'z') return true;
        if (c >= 'A' && c <= 'Z') return true;
        if (c >= '0' && c <= '9') return true;
        return false;
    }
};

BB一句:

注意:
1 、s=s.replaceAll("[\pP\p{Punct}]" , ""); 去除标点作用

相关文章

  • leecode刷题(15)-- 验证回文字符串

    leecode刷题(15)-- 验证回文字符串 验证回文字符串 给定一个字符串,验证它是否是回文串,只考虑字母和数...

  • 字符串问题合集

    1. 验证回文串 题目描述: 输入一个字符串,只关注字母和数字,判断字符串是否为回文串。空字符串也可以认为是回文串...

  • Swift 验证回文字符串 - LeetCode

    题目:验证回文字符串 描述:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明...

  • 验证回文字符串

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

  • LeetCode | 0680. Valid Palindrom

    LeetCode 0680. Valid Palindrome II验证回文字符串 Ⅱ【Easy】【Python】...

  • Leetcode 680 验证回文字符串 Ⅱ && 剑指 Off

    680. 验证回文字符串 Ⅱ[https://leetcode-cn.com/problems/valid-pal...

  • LeetCode之验证回文串——JavaScript实现

    题目: 125. 验证回文串 描述: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小...

  • 680-验证回文字符串II

    验证回文字符串II 题目 给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例 1: 输入:...

  • 「算法」验证回文串 & 回文链表

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

  • 算法分享

    字符串 1.字符串反转 Leecode3442.有效的括号 Leecode203.验证回文串 Leecode125...

网友评论

    本文标题:验证回文字符串

    本文链接:https://www.haomeiwen.com/subject/vscigftx.html