力扣L12--- 125验证回文串(java版)-2024年3月15日

1.题目

在这里插入图片描述

2.知识点

注1:在 Java 中,toString() 方法用于将对象转换为字符串表示形式。对于数组对象,toString() 方法将返回数组的字符串表示形式,其中包含数组中每个元素的字符串表示形式,以逗号分隔,并且包含在方括号中。
//toString 字符变成字符串

// 测试示例
        char[] s = {'H', 'e', 'l', 'L', 'o'};
        solution.toLowerCase(s);
        System.out.println(Arrays.toString(s));
         // 输出 ["h", "e", "l", "l", "o"]

注2:if (Character.isUpperCase(s[i])) // 检查字符是否为大写字符
s[i] = Character.toLowerCase(s[i]); // 将大写字符转换为小写字符

将字符数组中的所有大写字符转换为小写字符 步骤
用Character.isUpperCase(s[i])查找字符是不是大写的
再用Character.toLowerCase(s[i]) 将大写字符换成小写字符

注3:并移除所有非字母数字字符之后

Character.isLetterOrDigit(s[i]) 是 Java 中的一个方法调用,用于检查给定的字符 s[i] 是否是字母或数字字符。
具体来说,Character.isLetterOrDigit() 方法返回一个布尔值,表示给定的字符是否是字母或数字字符。如果字符是字母(大写或小写)或数字字符,则返回 true,否则返回 false。

import java.util.Arrays;

public class Solution {
    public static void main(String[] args) {
        char[] s = {'H', 'e', 'l', 'l', 'o', '!', '2', '#', 'w', 'o', 'r', 'l', 'd'};
        removeNonAlphanumeric(s);
        System.out.println(Arrays.toString(s)); // 输出 ["H", "e", "l", "l", "o", "2", "w", "o", "r", "l", "d"]
    }
    
    public static void removeNonAlphanumeric(char[] s) {
        int count = 0;
        for (int i = 0; i < s.length; i++) {
            if (Character.isLetterOrDigit(s[i])) {
              
            }
        }
        Arrays.fill(s, count, s.length, '\0'); // 将剩余部分填充为'\0',可选操作,不影响结果
    }
}

注4:**count++ 是一个后缀递增操作符。它的作用是先将 count 的当前值用于赋值给 s[i],然后再将 count 的值递增 1。**这样,s[i] 就被赋值为 s[count] 的当前值,然后 count 递增,指向下一个位置。
所以,s[count++] = s[i] 的含义是将字符数组 s 中的第 i 个位置的字符赋值给 s 中的第 count 个位置,并将 count 递增。这样就实现了将字母或数字字符移到数组的前面。

注5:Java 中的字符串是不可变的,所以您不能直接对字符串进行修改。需要使用 StringBuilder 或者其他可变的数据结构来实现字符串的修改操作。
Character.isUppercase(s[i]) 是错误的方法调用,应该是 Character.isUpperCase(s.charAt(i))。
Character.isLetterorDigit(s[i]) 也是错误的方法调用,应该是 Character.isLetterOrDigit(s.charAt(i))。
Character.toLowecase(s[i]) 是错误的方法调用,应该是 Character.toLowerCase(s.charAt(i))。
cnt[i++]=s[i] 是错误的用法,因为 cnt 应该是一个整数变量,而不是数组。

注6:for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isLetterOrDigit(ch)) {
sb.append(Character.toLowerCase(ch));
}
}

        StringBuilder sb = new StringBuilder();

        // 将字符串转换为只包含字母数字字符的形式,并转换为小写
        for (char ch : s.toCharArray()) {
            if (Character.isLetterOrDigit(ch)) {
                sb.append(Character.toLowerCase(ch));
            }
        }

注6:回文串用左右指针,然后再用charAt()方法

3.代码实现

class Solution {
    public boolean isPalindrome(String s) {
        
       StringBuilder sb=new StringBuilder();//StringBuilder存储的是可变的字符结构
        for(int i=0;i<s.length();i++)//将所有大写字符转换为小写字符、并移除所有非字母数字字符之后
        {
            char ch=s.charAt(i);//字符
            if(Character.isLetterOrDigit(ch))//判断是不是字符
           { sb.append(Character.toLowerCase(ch));}
            
        }

        //判断是不是回文串
        int left=0;//左指针指向起始位置
        int right=sb.length()-1;//右指针指向末尾位置
        while(left<right)
        {
         if(sb.charAt(left)!=sb.charAt(right))
         {
            return false;
         }
         left++;
         right--;
        }
        return true;


    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/460603.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用IDEA2023创建传统的JavaWeb项目并运行与调试

日期:2024-0312 作者:dusuanyun 文档环境说明: OS:Deepin 20.9(Linux) JDK: OpenJDK21 Tomcat:10.1.19 IDEA: 2023.3.4 (Ultimate Edition) 本文档默认已经安装JDK及环境变量的配置。 关键词…

【RPG Maker MV 仿新仙剑 战斗场景UI (四)】

RPG Maker MV 仿新仙剑 战斗场景UI 四 三级战斗指令菜单效果代码完成效果 下篇预告 三级战斗指令菜单 仙剑1中三级战斗的菜单内容如下&#xff1a;使用、投掷、装备这三项。 效果 在RMMV中原始菜单中是没有这三级菜单的&#xff0c;因此需要重新进行添加进去。 代码 这里贴…

量子遗传算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵...

关于量子遗传算法&#xff0c;在众多文献均有应用。下面简述一下原理。 &#xff08;1&#xff09;量子比特编码 子遗传算法通过引入量子比特来完成基因的存储和表达。量子比特是量子信息中的概念&#xff0c;它与经典比特不同&#xff0c;是因为它可以在同一时刻处于两个状态的…

Leet code 438 找到字符串中所有字母异位词

解题思路&#xff1a;滑动窗口 三步走 进窗口 判断 出窗口 然后更新结果 定义两个hash表在第一个表中存 p的有效字符 比如 abc a一个 b一个 c一个 这样就存在三个有效字符 在第二个hash表中进行滑动窗口的运行 定义一个常量count 如果滑动窗口中有效字符存在一个就…

string模拟实现

前言 上一期我们对STL进行了简单的介绍以及学习了string常用API的基本使用&#xff01;本期我们来探索它的底层实现&#xff01;自己对string的常用的接口进行模拟实现&#xff01; 本期内容介绍 常用成员函数模拟实现 常用非成员函数模拟实现 成员函数 构造函数 在进行模拟…

计算机网络 谢希仁(001-2)

计算机网络-方老师 总时长 24:45:00 共50个视频&#xff0c;6个模块 此文章包含1.5到1.7的内容 1.5计算机网络类别 连通 共享 分类方法 广域网是边缘部分和核心部分的核心部分 以前是拨号连接 现在是光纤 总线型 星型 环形网 1.6计算机网络的性能 带上单位之后就不是…

git bash 命令行反应慢、卡顿(定位出根本原因)

参考该博主&#xff1a; https://blog.csdn.net/weixin_50212044/article/details/131575987?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-131575987-blog-130024908.235v43pc_blog_bottom_relevance_base4&spm1001.210…

IP证书有什么作用?怎么申请?

关于IP地址证书&#xff0c;它的主要作用有这么几个点&#xff1a; 1.验明正身&#xff1a;就像身份证一样&#xff0c;它可以证明某个服务器的IP地址是真的、合法的&#xff0c;让咱知道咱们连接的就是正确的服务器&#xff0c;而不是冒牌货。这样一来&#xff0c;就可以降低像…

使用OpenCV实现人脸特征点检测与实时表情识别

引言&#xff1a; 本文介绍了如何利用OpenCV库实现人脸特征点检测&#xff0c;并进一步实现实时表情识别的案例。首先&#xff0c;通过OpenCV的Dlib库进行人脸特征点的定位&#xff0c;然后基于特征点的变化来识别不同的表情。这种方法不仅准确度高&#xff0c;而且实时性好&am…

塑料工厂5G智能制造数字孪生可视化平台,推进塑料行业数字化转型

塑料工厂5G智能制造数字孪生可视化平台&#xff0c;推进塑料行业数字化转型。塑料制造行业作为重要的工业领域&#xff0c;亟需借助这一平台实现产业升级与转型&#xff0c;以适应市场的变化和提高生产效率。传统的塑料制造过程往往存在生产效率低下、资源浪费、环境污染等问题…

鸿蒙车载原生开发,拓展新版图

一天内连发“五弹”、HiCar 4.0首次上车 华为鸿蒙狂扩“汽车朋友圈”-上游新闻 汇聚向上的力量 3月15日&#xff0c;在“华为云&华为终端云服务创新峰会2024”上&#xff0c;华为首批汽车行业伙伴广汽传祺、岚图汽车、零跑汽车、凯翼汽车加入鸿蒙生态合作&#xff0c;华为…

Python - 应用篇 :ChatGPT +Pycharm 序列号自动生成

前言&#xff1a; 客户要求在产品外壳上新增可追溯的二维码贴花&#xff0c;二维码信息内容如下&#xff1a; 编码格式&#xff1a;SBD 零部件代码 控制盒序列号 控制盒厂家 例如&#xff1a;[)>06P725-18428S24031410001ZJL SBD 零部件代码&#xff1a;[)>06P725-184…

考研复习C语言进阶(3)

结构体 1 结构体的声明 1.1 结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明 struct tag { member-list; }variable-list; 例如描述一个学生&#xff1a; struct Stu { char name[20];//名字 int ag…

java-ssm-jsp-基于java的客户管理系统的设计与实现

java-ssm-jsp-基于java的客户管理系统的设计与实现 获取源码——》公主号&#xff1a;计算机专业毕设大全

Spring Cloud Gateway针对指定接口做响应超时时间限制

背景&#xff1a;我做的这个服务中存在要对大数据量做自定义统计的接口和大文件上传接口&#xff0c;接口响应用时会超过gateWay配置的全局用时&#xff0c;如果调整网关全局的超时时间和服务的全局超时时间是不合理的&#xff0c;故此想能否单独针对某个接口进行细粒度超时限制…

【应急响应靶场web2】

文章目录 前言 一、应急响应 1、背景 2、webshell查杀 3、日志排查 1&#xff09;apache日志 2&#xff09;nginx日志 3&#xff09;ftp日志 4、隐藏账户 5、文件筛选 二、漏洞复现 总结 前言 靶场来源&#xff1a;知攻善防实验室 一、应急响应 1、背景 小李在某…

【C语言】—— 指针一 : 初识指针(上)

【C语言】—— 指针一 &#xff1a; 初识指针&#xff08;上&#xff09; 一、内存和地址1.1、如何理解内存和地址1.2、 如何理解编址 二、指针变量和地址2.1、取地址操作符 &2.2、 指针变量2.3、 解引用操作符 ∗ * ∗2.4、指针变量的大小 三、指针变量类型的意义3.1、 指…

LeetCode每日一题——两数之和

两数之和OJ链接&#xff1a;1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 在读懂题目后很多人觉得这种题目很简单&#xff0c;但是不管怎么写&#xff0c;在VS等其他编译器上能跑成功&#xff0c;但是在LeetCode上就是没办法通过。…

Java项目:54 springboot工资信息管理系统453

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本系统的使用角色可以被分为用户和管理员&#xff0c; 用户具有注册、查看信息、留言信息等功能&#xff0c; 管理员具有修改用户信息&#xff0c;发…

【回归预测】基于SSA-RF(麻雀搜索算法优化随机森林)的回归预测 多输入单输出【Matlab代码#66】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. 随机森林RF算法2. 麻雀搜索算法3. 实验模型4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】 1. 随机森林RF算法 …