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

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

 

示例 1:

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

输出: true

解释:"amanaplanacanalpanama" 是回文串

示例 2:

输入: "race a car"

输出: false

解释:"raceacar" 不是回文串

 

提示:

1 <= s.length <= 2 105

字符串 s 由 ASCII 字符组成

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/valid-palindrome

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package cn.fansunion.leecode.isNumber;

/**

 * 验证回文串

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

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

力扣

 * @author wen.lei@brgroup.com

 *

 * 2022-2-18

 */

public class ValidPalindrome {

    /* 示例 1:

    

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

        输出: true

        解释:"amanaplanacanalpanama" 是回文串

        示例 2:

    

        输入: "race a car"

        输出: false

        解释:"raceacar" 不是回文串*/

    /**

     * 从字符串中找出“字母数字”的字符串,复用之前一道题的方法。换汤不换药,新瓶装旧酒。

     * @param s

     * @return

     */

    public boolean isPalindrome(String s) {

        if(s==null||s.length()==0) {

            return false;

        }

        //cn.fansunion.leecode.isNumber.PalindromeNumber.isPalindromeStr(int)

        //整数版回文数的进阶,同一个问题,稍微有点区别。相同点,都需要对输入做一点处理

        String newStr=collectLetterDigit(s);

        return isPalindromeIntByStr(newStr);

    }

    

    /**

     * 从一个字符串中找出为字母或数字的字符,返回一个新的字符串,比如:“abc--]1 23”>"abc123"

     * @param s

     * @return

     */

    private String collectLetterDigit(String s) {

        StringBuilder sb = new StringBuilder();

        for(char ch:s.toLowerCase().toCharArray()) {

            if(Character.isLetterOrDigit(ch)) {

                sb.append(ch);

            }

        }

        return sb.toString();

    }

    //根据isPalindromeIntByStr,简单处理

    public boolean isPalindromeIntByStr(String numStr) {

        //左右比较,双指针

        for (int start = 0, end = numStr.length() - 1; start < end; start++, end--) {

            if (numStr.charAt(start)!=numStr.charAt(end)) {

                return false;

            }

        }

        return true;

    }

    

    /**

     * 仅供参考用:是否为回文数:number->str 进阶:你能不将整数转为字符串来解决这个问题吗?

     * @param x

     * @return

     */

    public boolean isPalindromeIntByStr(int x) {

        if (x < 0) {

            return false;

        }

        String numStr = String.valueOf(x);

        //左右比较,双指针

        for (int start = 0, end = numStr.length() - 1; start < end; start++, end--) {

            if (numStr.charAt(start)!=numStr.charAt(end)) {

                return false;

            }

        }

        return true;

    }

}

执行结果:通过

显示详情

添加备注

执行用时:4 ms, 在所有 Java 提交中击败了42.91%的用户

内存消耗:41 MB, 在所有 Java 提交中击败了17.97%的用户

通过测试用例:480 480

炫耀一下:

package test.leecode.isNumber;

import org.junit.Assert;

import org.junit.Test;

import cn.fansunion.leecode.isNumber.ValidPalindrome;

/**

 * @author wen.lei@brgroup.com

 *

 * 2022-2-19

 */

public class ValidPalindromeTest {

    

    @Test

    public void test() {

        //isPalindrome

        ValidPalindrome vp = new ValidPalindrome();

        Assert.assertTrue(vp.isPalindrome("A man, a plan, a canal: Panama"));

        Assert.assertTrue(vp.isPalindrome("abcd-dc-ba"));

        Assert.assertFalse(vp.isPalindrome("race a car"));

        Assert.assertFalse(vp.isPalindrome("abcd-dc-ba1"));

    }

}

3628、验证回文串相关推荐

  1. c语言判断字符串是不是回文_125. 验证回文串

    125. 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例1: 输入: "A man, a ...

  2. 算法------验证回文串

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

  3. Python中判断字符是否为字母、数字、字母和数字组合,验证回文串(LeetCode125)

    判断字符串是否为字母.数字 函数str.isdigit()判断字符是否为数字,函数str.isalpha()判断字符是否为字母,函数isalnum()判断字符是否为数字字母组合. 上代码: str1 ...

  4. java实现回文验证_LeetCode 精选 TOP 面试题(Java 实现)—— 验证回文串

    文章目录 一.题目描述 1.1 题目 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: ...

  5. LeetCode:验证回文串【125】

    LeetCode:验证回文串[125] 题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: ...

  6. leetcode 高薪_LeetCode 第 125 号问题:验证回文串

    本文首发于公众号「五分钟学算法」,是图解 LeetCode 系列文章之一. 个人网站:https://www.cxyxiaowu.com 题目来源于 LeetCode 第 125 号问题:验证回文串. ...

  7. 力扣--125验证回文串/680验证回文字符串II

    125验证回文串 python代码 常规 def isPalindrome(s):if len(s) < 2:return TruesList = []s = s.lower()print(s) ...

  8. 双指针 -- 验证回文串

    传递门:验证回文串 思路: class Solution { public:bool check(char c){return c>='0'&&c<='9' || c> ...

  9. 回文串问题(leetcode 125. 验证回文串 c#)

    leetcode 125. 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: &quo ...

  10. Leetcode:125.验证回文串,917仅仅反转字母,387字符串的第一个唯一字符

    文章目录 125.验证回文串 题目描述 示例 思路分析 代码实现 917.仅仅反转字母 题目描述 示例 思路分析 代码实现 387.字符串的第一个唯一字符 题目描述 示例 思路分析 代码实现: 125 ...

最新文章

  1. jvm性能调优实战 - 30使用jmap和jhat摸清线上系统的对象分布
  2. String 类型的相关转换
  3. 【OpenSSL】OpenSSL之SHA
  4. visual studio for mac的离线安装初体验
  5. 基于html人事管理报告,基于C++builder的课程设计报告 (人事管理系统)
  6. Scala的List集合和Set集合
  7. javascript中基本类型和引用类型的区别分析
  8. wsgiref — WSGI Utilities and Reference Implementation¶
  9. 关于K8s技术架构的几个问题
  10. aioserve oracle,oracle进程关不掉的问题??新手问题
  11. 苹果延期中国零售商店的重新开业时间 线上商店依旧正常工作
  12. Linux QQ 2.0.0 Beta2 发布
  13. STM32 USB数据接收与数据发送程序流程分析
  14. member selection 运算符是什么
  15. TwinCAT 软件安装级别的简要介绍,倍福FTP
  16. r语言t检验输出检验统计量_R语言:常用统计检验
  17. vue项目静态图片不显示
  18. 索引格式的图片在PS软件中无法操作,怎么解决?
  19. 如何在游戏中设置游戏的帧率和显示帧率
  20. 抖音算法推荐机制详解

热门文章

  1. 比例调速阀AMESim仿真
  2. http协议中的keeplive是做什么的?它的适应场景是什么?
  3. firework cs4入门
  4. java 内部邮件_java企业内部邮件email收发管理系统s2sh
  5. 苹果计算机 win10,苹果电脑怎么安装Win10系统?
  6. 51单片机c语言秒表,51单片机秒表C程序
  7. CAD关于线型操作添加线型(com接口c#语言)
  8. imnoise2.m
  9. python代理IP的使用
  10. 16.2.4 登录到 SMTP 服务器