0
点赞
收藏
分享

微信扫一扫

【第28天】给定一个字符串S,请你判断它是否为回文字符串 | 回文的判断

​​​​

学习指引

  • ​​序、专栏前言​​
  • ​​序、专栏前言​​
  • ​​一、【例题1】​​
  • ​​1、题目描述​​
  • ​​2、解题思路​​
  • ​​3、模板代码​​
  • ​​4、代码解析​​
  • ​​三、推荐专栏​​
  • ​​四、课后习题​​

序、专栏前言

   本专栏开启,目的在于帮助大家更好的掌握学习​​Java​​​,特别是一些​​Java学习者​​​难以在网上找到系统地算法学习资料帮助自身入门算法
   但最最主要的还是需要独立思考,对于本专栏的所有内容,能够进行完全掌握,自己完完全全将代码写过一遍,对于算法入门肯定是没有问题的。
   算法的学习肯定不能缺少总结,这里我推荐大家可以到​高校算法社区​将学过的知识进行打卡,以此来进行巩固以及复习。
  学好算法的唯一途径那一定是题海战略,大量练习的堆积才能练就一身本领。专栏的任何题目我将会从【题目描述】【解题思路】【模板代码】【代码解析】等四板块进行讲解。

序、专栏前言

  回文的判定是一个非常重要的内容,在任何地方都是一个很重要的考点。对于字符串的回文判定,使用双指针法进行判定是最简易的一种方法。它可以写成一个模板函数,非常简短,大家直接背下来进行使用即可。当然我们学习前也应该清楚回文的定义。
  什么是回文串?
  回文串的定义是一个字符串,从左往右读和从有右往左是一样的,比如等等。也就是有对称性质。 这里需要注意的是,当字符串的长度是奇数时,对于最中间的字符通常我们是无视的,它不影响我们对于回文的判断。比如上述说的改成任何字符它都仍然是一个回文串。

一、【例题1】

1、题目描述

组测试数据,每次给定一个字符串,字符串长度不超过,请你判断它是否为回文串,如果是则输出​​​Yes​​​,否则输出​​No​​。

2、解题思路

一种思路是根据回文的定义出发,我们使用​​​StringBuilder​​​倒叙获得字符串,判断得到的字符串与原字符串是否相等,相等则为回文串。
  另一种思路的使用双指针,一个指针指向头另一个指向尾部,判定两个指针指向字符是否相同,如果不同说明不是回文串可以直接退出循环,否则指针同时向内移动,相等时退出循环。

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、代码解析

  • 两种方法均可,不过更加推荐第二种双指针的做法,这样在判断到非回文串时可以提前跳出循环,效率更高。而且不需要使用空间,推荐大家记住该模板。
  • 【第28天】给定一个字符串S,请你判断它是否为回文字符串 | 回文的判断_开发语言_10

​​​​


课后习题

序号

题目链接

难度评级

1

​​ 回文数​​

1

2

​​有效的回文​​

2

举报

相关推荐

0 条评论