125. 验证回文串

思路

  1. 首先枚举出字母和数字(orz…看了其他人的题解, 才想起来Character.isLetterOrDigit可以直接判断字符串是否字母或数字);
  2. 声明左指针指向入参第0位, 右指针指向入参最后一位, 用于判断左指针指向的元素(简称左元素)是否等于右指针指向的元素(简称右元素), 每遍历一次都会让左右指针往中间靠拢;
  3. 当左元素不是合法字符时, 左指针循环后移一位, 直到找到下一个合法字符; 右指针同理, 期间左指针不能超过右指针, 否则会下标越界/重复判断;
  4. 如果左指针和右指针已经指向同一位, 说明其他下标的元素都已相等;
  5. 使用字符串的api, 忽略大小写判断左元素和右元素是否相等, 如果不相等则直接返回false。

代码

class Solution {public boolean isPalindrome(String s) {// 忘记正则了, 枚举出所有字母和数值, 并转换为Set, 便于后续判断时间复杂度降为O(1)final String charStr = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890";int left = 0;int right = s.length() - 1;Set<Character> cs = new HashSet<>();for (int i = 0; i < charStr.length(); i++) {cs.add(charStr.charAt(i));}while (left < right) {// 左指针不是字母或数字, left < right条件避免下标越界while (!cs.contains(s.charAt(left)) && left < right) {left++;}// 右指针不是字母或数字while (!cs.contains(s.charAt(right)) && left < right) {right--;}// 如果已经减到超出了左右指针各自的范围, 说明前面的比较都通过了, 退出循环即可if (right == left) {break;}// 判断元素是否相等if (!String.valueOf(s.charAt(left)).equalsIgnoreCase(String.valueOf(s.charAt(right)))) {return false;}left++;right--;}return true;}
}

题目链接

125. 验证回文串

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【力扣一刷】代码随想录day27(39. 组合总和、40.组合总和II、131.分割回文串)

目录 【39. 组合总和】中等题 【40.组合总和II】中等题 【131. 分割回文串】中等题 【39. 组合总和】中等题 思路&#xff1a; 确定终止条件&#xff1a;sum target时记录路径并返回。剪枝&#xff1a;当前节点的路径之和已经大于sum就不可能再等于sum了&#xff0c;结束该分支…

16进制的字符串转byte[]数组 以及将字节数组转换成十六进制的字符串

16进制的字符串转byte[]数组 public class ClientString16 {@Testpublic void get16Str(){String str="48 47 12 00 14 12 16 08 15 0d 30 0f 02 30 30 30 30 30 30 30 30 30 30 00 c2";byte[] bytes = hexStringToByteArray(str);getBytetoString(bytes);//String …

【御控物联】JavaScript JSON结构转换(12):对象To数组——键值互换属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、核心构件之转换映射三、案例之《JSON对象 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换…

LeetCode 每日一题 2024/3/25-2024/3/31

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 3/25 518. 零钱兑换 II3/26 2642. 设计可以求最短路径的图类3/27 2580. 统计将重叠区间合并成组的方案数3/28 1997. 访问完所有房间的第一天3/29 2908. 元素和最小的山形三…

【御控物联】JavaScript JSON结构转换(8):数组To数组——多层属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、案例之《JSON数组 To JSON数组》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0c;生成新的JS…

Java

1.学生和老师都会有work方法&#xff0c;学生的工作是学习&#xff0c;老师的工作是教书&#xff0c;我利用了一个接口来实现&#xff1b; 2.同时&#xff0c;老师和学生都是人&#xff0c;并且都有姓名&#xff0c;姓名&#xff0c;年龄和身高等特征&#xff0c;我用了一个继承…

http协议补充

7.7实现http请求 class httprequest { public:void Deserialize(std::string content){while (true){auto pos content.find(sep);if (pos std::string::npos){break;}std::string temp content.substr(0, pos);if (temp.empty()){break;}req_header_.push_back(temp);cont…

Redis 服务

任务描述:请采用 redis 服务,实现高并发数据和海量数据的读写。 (1)利用 linux2 搭建 redis cluster 集群,使用端口 7001-7003模拟主节点,7004-7006 模拟从节点,让其他主机可以访问 redis 集群。 [root@linux4 ~]# yum install -y redis policycoreutils-python-utils…

轮播卡片切换实现

背景 如上图&#xff0c;实现一个轮播卡片能力&#xff0c;支持手动滑动&#xff0c;手动拖动&#xff0c;已经点击两端切换按钮。 实现 <template><div class"top-menu"><!-- Swiper --><div v-if"headerMenuList.length > 9" c…

并查集----格子游戏

并查集中最重要的是要搞懂&#xff1a; 不明白的可以拿纸自己先演示一番&#xff0c;find函数不仅能找到他们的祖先数&#xff0c;而且同时也能更新路径的子结点都等于祖先&#xff0c;然后以后寻找时会更加的方便&#xff01;

如何优雅地用latex写算法作业

中文支持 建议直接看这篇dalao的文章&#xff0c;三种方法写的很清楚 LaTex支持中文的三种方式_latex 编译中文-CSDN博客 代码插入 C 文章前面加 \definecolor{mygreen}{rgb}{0,0.6,0} \definecolor{mygray}{rgb}{0.5,0.5,0.5} \definecolor{mymauve}{rgb}{0.58,0,0.82} …

C++学习建议

C是一门强大且广泛应用的编程语言&#xff0c;特别适合系统级开发、高性能应用和游戏引擎等场景。如果你准备深入学习C&#xff0c;以下是一些关键点和学习路径建议&#xff1a; 1. **基础语法**&#xff1a;首先掌握C的基础语法&#xff0c;如变量声明与赋值、数据类型、运算…

蓝桥杯单片机速成4-温度传感器DS18B20

目录 一、电路图 二、底层驱动代码 三、温度读取实现 四、实际使用 一、电路图 二、底层驱动代码 时序是单总线 我们需要修改的地方是单总线内部延时函数&#xff0c;改成 void Delay_OneWire(unsigned int t) { t*12; while(t--); } #ifndef __ONEWIRE_H #defi…

Unity TrailRenderer的基本了解

在Unity中&#xff0c;TrailRenderer组件用于在对象移动时创建轨迹效果。通常用于增强游戏中的动态物体&#xff0c;比如子弹、飞行道具或者角色移动时的拖尾效果。 下面来了解下它的基本信息。 1、创建 法1&#xff1a;通过代码创建 using UnityEngine;public class Trail…

动态规划刷题(算法竞赛、蓝桥杯)--合唱队形(线性DP)

1、题目链接&#xff1a;[NOIP2004 提高组] 合唱队形 - 洛谷 #include <bits/stdc.h> using namespace std; int n,ans; int a[105],f[105][2];//f[i][2]中2表示正反两个方向int main(){cin>>n;for(int i1;i<n;i){cin>>a[i];}//正方向求最长上升子序列 a[…

[flink 实时流基础] 输出算子(Sink)

学习笔记 Flink作为数据处理框架&#xff0c;最终还是要把计算处理的结果写入外部存储&#xff0c;为外部应用提供支持。 文章目录 **连接到外部系统****输出到文件**输出到 Kafka输出到 mysql自定义 sink 连接到外部系统 Flink的DataStream API专门提供了向外部写入数据的方…

HTTP,Servlet

HTTP 概念&#xff1a;HyperTextTransferProtocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则 HTTP协议特点&#xff1a; 1.基于TCP协议&#xff1a;面向连接&#xff0c;安全 2.基于请求-响应模型的&#xff1a;一次请求对应一次响应 …

【学习笔记】java项目—苍穹外卖day06

文章目录 苍穹外卖-day06课程内容1. HttpClient1.1 介绍1.2 入门案例1.2.1 GET方式请求1.2.2 POST方式请求 2. 微信小程序开发2.1 介绍2.2 准备工作2.3 入门案例2.3.1 小程序目录结构2.3.2 编写和编译小程序2.3.3 发布小程序 3. 微信登录3.1 导入小程序代码3.2 微信登录流程3.3…

工业电脑工控主机维修各种品牌型号人机界面工控屏深圳捷达工控维修

我们的维修流程 在 深圳捷达工控维修&#xff0c;我们确保客户获得尽可能最好的维修服务&#xff0c;我们简化的维修流程证明了我们对卓越的承诺 1&#xff0c;向内的 收到的仪器将登录到我们的系统并分配一个唯一的作业 ID&#xff0c;该 ID 带有条形码以便于跟踪。 2&#xf…