125. 验证回文串


125. 验证回文串

难度简单
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true

示例 2:
输入: “race a car”
输出: false

class Solution {
    public boolean isPalindrome(String s) {
        StringBuffer sgood = new StringBuffer();
        int length = s.length();
        for (int i = 0; i < length; i++) &#123;
            char ch = s.charAt(i);
            if (Character.isLetterOrDigit(ch)) &#123;
                sgood.append(Character.toLowerCase(ch));
            &#125;
        &#125;
        StringBuffer sgood_rev = new StringBuffer(sgood).reverse();
        return sgood.toString().equals(sgood_rev.toString());
    &#125;

// 作者:LeetCode-Solution
// 链接:https://leetcode-cn.com/problems/valid-palindrome/solution/yan-zheng-hui-wen-chuan-by-leetcode-solution/
&#125;
class Solution &#123;
    public boolean isPalindrome(String s) &#123;
        StringBuffer sgood = new StringBuffer();
        int length = s.length();
        for (int i = 0; i < length; i++) &#123;
            char ch = s.charAt(i);
            if (Character.isLetterOrDigit(ch)) &#123;
                sgood.append(Character.toLowerCase(ch));
            &#125;
        &#125;
        int n = sgood.length();
        int left = 0, right = n - 1;
        while (left < right) &#123;
            if (Character.toLowerCase(sgood.charAt(left)) != Character.toLowerCase(sgood.charAt(right))) &#123;
                return false;
            &#125;
            ++left;
            --right;
        &#125;
        return true;
    &#125;

// 作者:LeetCode-Solution
// 链接:https://leetcode-cn.com/problems/valid-palindrome/solution/yan-zheng-hui-wen-chuan-by-leetcode-solution/
&#125;
class Solution &#123;
    public boolean isPalindrome(String s) &#123;
        int n = s.length();
        int left = 0, right = n - 1;
        while (left < right) &#123;
            while (left < right &&
            !Character.isLetterOrDigit(s.charAt(left))) &#123;
                ++left;
            &#125;
            while (left < right &&
            !Character.isLetterOrDigit(s.charAt(right))) &#123;
                --right;
            &#125;
            if (left < right) &#123;
                if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) &#123;
                    return false;
                &#125;
                ++left;
                --right;
            &#125; //这个left < right去掉貌似可以,while里三处必须有.
        &#125;
        return true;
    &#125;
// 作者:LeetCode-Solution
// 链接:https://leetcode-cn.com/problems/valid-palindrome/solution/yan-zheng-hui-wen-chuan-by-leetcode-solution/
&#125;

文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
83. 删除排序链表中的重复元素 83. 删除排序链表中的重复元素
83. 删除排序链表中的重复元素难度简单 480给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例  1:输入: 1->1->2输出: 1->2 示例  2:输入: 1->1->2->3-
下一篇 
977. 有序数组的平方 977. 有序数组的平方
977. 有序数组的平方难度简单 209给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方组成的新数组,要求也按 非递减顺序 排序。 示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,1
  目录