当前位置: 首页 > article >正文

【力扣】125. 验证回文串

问题描述

思路详情

本题目的重点是对java中字符串的各种API用法的掌握理解

  • 1.首先只保留字母和数字
    • 1.1可以使用正则表达式
    • 1.2 Character.isLetterOrDight(ch)  ,但是这个只能单个字符判断
  • 2.将大写字母全部小写
  • 3.验证是否为回文串

代码

通过正则表达式 ,可以直接筛选出所有的数字和大小写的字母,再将其转换为小写

至于回文,只需要比较一半较好了,并且奇偶长度回文的判断,和 整数取整后一样。

        偶数,就正好是一半的比较

        奇数,则对于回文数来说,中间的那个数也不参与比较。

class Solution {
    public boolean isPalindrome(String s) {
        
        /**
            1.只保留字母和数字
                1.1正则表达式
                1.2
                char ch=s.charAt(i);
                if( Character.isLetterOrDight(ch))   注意,这个是单个字符判断
                    sgood.append(Character.toLowerCase(ch));
            2.全部变为小写
            3.确保是回文
                3.1 可以通过长度来判断
                3.2 使用栈来判断
         */

        String s1 = s.replaceAll("[^a-zA-Z0-9]", "");

        String s2=s1.toLowerCase();

        int len=s2.length();
        for(int i=0;i<len/2;i++){
            if(s2.charAt(i)!=s2.charAt(len-i-1))
                return false;
        }
        
        return true;
    }
}

这种写法则是用到了 

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


http://www.kler.cn/a/412316.html

相关文章:

  • 实时数据开发 | checkpoints监控和调优
  • js中this的指向问题
  • ubuntu设置程序开机自启动
  • 腾讯云OCR车牌识别实践:从图片上传到车牌识别
  • 如何使用GCC手动编译stm32程序
  • 微软Ignite 2024:建立一个Agentic世界!
  • 集成金蝶云星空数据至MySQL的完整案例解析
  • 【es6】原生js在页面上画矩形及删除的实现方法
  • 【Linux】基础IO-文件描述符
  • 【Linux学习】【Ubuntu入门】2-5 shell脚本入门
  • CentOS 环境使用代理下载数据失败-EOF occurred in violation of protocol (_ssl.c:1002)
  • 自主研发,基于PHP+ vue2+element+ laravel8+ mysql5.7+ vscode开发的不良事件管理系统源码,不良事件管理系统源码
  • 一篇文章了解Linux
  • react项目初始化配置步骤
  • 关于 Android LocalSocket、LocalServerSocket
  • C++中虚继承为什么可以解决菱形继承的数据冗余问题
  • EasyAnimate:基于Transformer架构的高性能长视频生成方法
  • LeetCode 2924. Find Champion II
  • CRTP mixins EBO
  • 代理模式 (Proxy Pattern)
  • C#基础36-40
  • 【大数据测试 Elasticsearch 的 四大 常见问题及处理方案】
  • 【模糊查询Redis的Key,过滤出其中ZSET类型中包含自定义字符串的元素并删除】
  • 老旧前端项目如何升级工程化的项目
  • 鸿蒙Native使用Demo
  • ubuntu使用Docker,安装,删除,改源等记录