当前位置:网站首页>【第28天】给定一个字符串S,请你判断它是否为回文字符串 | 回文的判断
【第28天】给定一个字符串S,请你判断它是否为回文字符串 | 回文的判断
2022-06-29 15:43:00 【执 梗】
序、专栏前言
本专栏开启,目的在于帮助大家更好的掌握学习Java,特别是一些Java学习者难以在网上找到系统地算法学习资料帮助自身入门算法,同时对于专栏内的内容有任何疑问都可在文章末尾添加我的微信给你进行一对一的讲解。
但最最主要的还是需要独立思考,对于本专栏的所有内容,能够进行完全掌握,自己完完全全将代码写过一遍,对于算法入门肯定是没有问题的。
算法的学习肯定不能缺少总结,这里我推荐大家可以到高校算法社区将学过的知识进行打卡,以此来进行巩固以及复习。
学好算法的唯一途径那一定是题海战略,大量练习的堆积才能练就一身本领。专栏的任何题目我将会从【题目描述】【解题思路】【模板代码】【代码解析】等四板块进行讲解。
序、专栏前言
回文的判定是一个非常重要的内容,在任何地方都是一个很重要的考点。对于字符串的回文判定,使用双指针法进行判定是最简易的一种方法。它可以写成一个模板函数,非常简短,大家直接背下来进行使用即可。当然我们学习前也应该清楚回文的定义。
什么是回文串?
回文串的定义是一个字符串,从左往右读和从有右往左是一样的,比如 a b c c b a 、 a b f b a abccba、abfba abccba、abfba等等。也就是有对称性质。 这里需要注意的是,当字符串的长度是奇数时,对于最中间的字符通常我们是无视的,它不影响我们对于回文的判断。比如上述说的 a b f b a abfba abfba, f f f改成任何字符它都仍然是一个回文串。
一、【例题1】
1、题目描述
给定一个整数 t ( 1 ≤ n ≤ 1000 ) t(1\leq n \leq1000) t(1≤n≤1000)组测试数据,每次给定一个字符串 S S S,字符串长度不超过 1000 1000 1000,请你判断它是否为回文串,如果是则输出
Yes,否则输出No。
2、解题思路
( 1 ) (1) (1)一种思路是根据回文的定义出发,我们使用StringBuilder倒叙获得字符串,判断得到的字符串与原字符串是否相等,相等则为回文串。
( 2 ) (2) (2)另一种思路的使用双指针,一个指针指向头另一个指向尾部,判定两个指针指向字符是否相同,如果不同说明不是回文串可以直接退出循环,否则指针同时向内移动,相等时退出循环。
3、模板代码
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while (t-->0){
String s=sc.next();
System.out.println(check(s)?"Yes":"No");
}
}
static boolean check(String s){
StringBuilder sb=new StringBuilder();
for (int i = s.length()-1; i >=0 ; i--) {
sb.append(s.charAt(i));
}
return sb.toString().equals(s);
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while (t-->0){
String s=sc.next();
System.out.println(check(s)?"Yes":"No");
}
}
static boolean check(String s){
int l=0,r=s.length()-1;
while (l<r){
if (s.charAt(l++)!=s.charAt(r--)) return false;
}
return true;
}
}
4、代码解析
- ( 1 ) (1) (1)两种方法均可,不过更加推荐第二种双指针的做法,这样在判断到非回文串时可以提前跳出循环,效率更高。而且不需要使用空间,推荐大家记住该模板。

三、推荐专栏
四、课后习题
| 序号 | 题目链接 | 难度评级 |
|---|---|---|
| 1 | 回文数 | 1 |
| 2 | 有效的回文 | 2 |
边栏推荐
猜你喜欢

wallys/m.2/Adapter card(one pcie1x to 4 x Mini PCIE)
[data analysis] five common questions about learning SQL?

LeetCode-64-最小路径和

暑期数据可视化分析展示效果

#夏日挑战赛# HarmonyOS - 方舟开发框架ArkUI 流光按钮效果

面试官:说一下MySQL事务隔离级别?

Volcano engine was selected into the first "panorama of edge computing industry" in China

【大家的项目】 Rbatis ORM官网上线

火山引擎入选国内首个《边缘计算产业全景图》

智能聊天机器人的优势在哪里?资深独立站卖家告诉你!
随机推荐
如何在 WordPress 中嵌入 iFrame
leetcode:232. 用栈实现队列【双栈,一个辅助一个模拟队列】
R语言plotly可视化:plotly可视化箱图、可视化多个分类变量的箱图(Several Box Plots)
自学编程能看得懂代码,但是自己写不出来怎么办
EasyGBS调用获取实时快照接口时,出现白色方块该如何解决?
我想知道我在南宁,到哪里开户比较好?另外,手机开户安全么?
How to install WordPress on a web site
CSDN无法复制问题
事件相关电位ERP的皮层溯源分析
Leetcode-234-palindrome linked list
Where has lifeifei reached in his key "embodied intelligence"?
面试官:说一下MySQL事务隔离级别?
2022年第一季度保险服务数字化跟踪分析
R语言DALEX包的explain函数生成指定分类预测机器学习模型解释器、predict_parts函数基于oscillations方法分析对于指定的某一条样本、每个变量对于预测结国的贡献程度
Numpy 的研究仿制 1
微信公告号自动回复使用图灵机器人实现智能回复
wallys/m.2/Adapter card(one pcie1x to 4 x Mini PCIE)
迪赛智慧数——其他图表(基本旭日图):毕业演讲高频词
天龙八部TLBB系列 - 如何让宠物学习十二满技能
LeetCode-64-最小路径和