前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java输入的字符串是否_java采用3种方式判断用户输入的字符串是否为回文

java输入的字符串是否_java采用3种方式判断用户输入的字符串是否为回文

作者头像
用户7886150
修改于 2021-04-29 06:42:07
修改于 2021-04-29 06:42:07
1.5K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Java程序将字符转换为字符串,反之亦然

一、描述

 回文的定义:"回文数" 就是正读倒读都一样的整数。如奇数个数字:98789, 这个数字正读是98789,倒读也是98789;偶数个数字3223也是回文数。

 我们今天将回文数扩展为字母和数字组合回文,如adgu6776ugda也是回文,我们采用三种方式判断这种类型的字符串是否为回文:

 1.调用StringBuffer类对象的reverse()方法,将字符串翻转后与之前的字符串比较,如果相等则为回文,反之亦然;

 2.采用low和high两个变量分别对应字符串对称位置的index,所有对称位置的字符都相等则为回文,反之亦然;

 3.使用一个变量i来表示字符串的下标,找出对称位置的index关系来判断字符串是否为回文。

 二、源代码

 import java.util.Scanner;

 import javax.swing.JOptionPane;

 /**

 * 回文描述:正着读过去和倒着读回来的字符串序列相同则为回文,如:1h3gkg3h1是回文

 * @author tong

 *

 */

 public class PalindromeIgnoreNonAlphanumeric {

 public static void main(String[] args) {

 //可以使用javax.swing.JOptionPane类中的showInputDialog()方法提示用户输入字母或者数字串

 String s = JOptionPane.showInputDialog("请输入输入字符串:");

 //调用isPalindromeByBuffer()方法

 String output = s + (isPalindromeByBuffer(s)?"是":"不是")+"回文。";

 JOptionPane.showMessageDialog(null, output);

 s = JOptionPane.showInputDialog("请输入输入字符串:");

 //调用isPalindromeByCharAt()方法

 output = s + (isPalindromeByCharAt(s)?"是":"不是")+"回文。";

 JOptionPane.showMessageDialog(null, output);

 //使用Scanner(System.in)方法提示用户输入字符串

 System.out.println("请输入输入字符串:");

 Scanner in=new Scanner(System.in);

 String strOrigin=in.next();

 //调用isPalindromeByCharAtSingle()方法

 System.out.print(strOrigin + (isPalindromeByCharAtSingle(s)?"是":"不是")+"回文。");

 }

 /**

 * 通过调用StringBuffer的对象的reverse()方法,来判断翻转前后字符串是否相等,确定是否为回文

 * @param s

 * @return

 */

 public static boolean isPalindromeByBuffer(String s) {

 String strOrigin = filterLetterAndDigit(s);

 //将strOrigin作为输入参数,构造一个StringBuffer对象

 StringBuffer strBuf = new StringBuffer(strOrigin);

 //调用StringBuffer对象自带的reverse()方法进行字符串翻转,最后调用toString()返回一个String类型字符串

 String strAfterReverse = strBuf.reverse().toString();

 //通过equals()方法判断原来的字符串和翻转后的字符串是否相等,来确定是否为回文

 return strOrigin.equals(strAfterReverse);

 }

 /**

 * 通过字符串中的对称位置字符串是否相同来判断是否为回文,这里用了两个变量low和high来分别对应字符串对称位置的index

 * @param s

 * @return

 */

 public static boolean isPalindromeByCharAt(String s) {

 //low和high分别对应字符串对称位置的index,以此来判断所有对称位置字符是否相同

 int low = 0;

 int high = s.length() - 1;

 while (low < high) {

 if (s.charAt(low) != s.charAt(high))

 return false; // 不是回文

 low++;

 high--;

 }

 return true; // 是回文

 }

 /**

 * 通过字符串中的对称位置字符串是否相同来判断是否为回文,这里用了一个变量i来对应字符串对称位置的index

 * @param s

 * @return

 */

 public static boolean isPalindromeByCharAtSingle(String s) {

 //通过对称下标的关系使用一个变量即可判断所有对称位置字符是否相同

 for(int i=0;i

 //只有当前一半字符串和后一半字符串对应位置相同,那么才是回文,只有有一个对称位置的字符不同就不是回文

 if(s.charAt(i)!=s.charAt(s.length()-i-1)){

 return false;

 }

 }

 return true;

 }

 /**

 * 通过调用Character.isLetterOrDigit(Char char)过滤字母或者数字,判断字母或者数字的组合是否为回文

 * @param s

 * @return String

 */

 public static String filterLetterAndDigit(String s) {

 StringBuffer strBuf = new StringBuffer();

 for (int i = 0; i < s.length(); i++) {

 if (Character.isLetterOrDigit(s.charAt(i))) {

 //调用StringBuffer的append(Char char)方法,将输入的字母或者数字加入其中

 strBuf.append(s.charAt(i));

 }

 }

 //返回String类型,需要将StringBuffer转换为String,需要调用StringBuffer对象的toString()方法

 return strBuf.toString();

 }

 }

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
Jmeter系列(27)- 详解正则提取器
Regular Expression 正则表达式 Template 从找到的匹配项中创建字符串的模板 Match No.(0 for Random)
小菠萝测试笔记
2020/06/28
2.3K0
Jmeter系列(27)- 详解正则提取器
Jmeter之json条件提取实战(三)
之前写过2篇json提取的文章【Jmeter篇】后置处理器之正则提取器、Json提取器Jmeter之json提取器实战(二)有时我们想通过接口响应数据中的默写条件进行提取对应的字段,这时,就可以用到json条件提取,可以提取对应的值进行使用或迭代。
王大力测试进阶之路
2020/02/10
1.3K0
Jmeter之json提取器实战(二)
之前写过一篇文章【Jmeter篇】后置处理器之正则提取器、Json提取器 不是很完善,今天我们再来写一篇json提取器进行补充说明。
王大力测试进阶之路
2019/12/15
9440
【python接口自动化】- 使用json及jsonpath转换和提取数据
​ JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它可以让人们很容易的进行阅读和编写,同时也方便了机器进行解析和生成,适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。简单说就是javascript中的对象和数组,通过这两种结构可以表示各种复杂的结构。
huofo
2022/03/18
2.5K0
【python接口自动化】- 使用json及jsonpath转换和提取数据
jmeter使用个人总结(很细很全)
Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。
魔都虫师
2020/05/21
4.7K0
jmeter使用个人总结(很细很全)
sqlmap命令详解pdf_SQLmap
服务型数据库(前提知道数据库用户名和密码) DBMS://USER:PASSWORD@DBMS_PORT/DATABASE_NAME (MySQL,Oracle,Microsoft SQL Server,PostgreSQL,etc)
全栈程序员站长
2022/11/01
2.8K0
sqlmap命令详解pdf_SQLmap
还不了解 etcd?一文带你快速入门(万字长文)
2018年12月 etcd 作为孵化项目 CNCF(云原生计算基金会),几天前 CNCF 宣布 etcd 正式毕业,成为 CNCF 顶级项目。CNCF 官方表示 etcd 项目的采用率持续增加,也有稳定的治理流程,功能已达一定成熟度。
aoho求索
2020/12/01
17.7K0
还不了解 etcd?一文带你快速入门(万字长文)
【测试SQLite】测试SQLite支持的SQL语句分类
为了全面测试SQLite支持的SQL语句,需要设计一个包含多种类型的表结构,并编写各种SQL语句来测试这些功能。目前按照以下分类进行测试:
SarPro
2024/05/24
4630
【测试SQLite】测试SQLite支持的SQL语句分类
商业数据分析从入门到入职(9)Python网络数据获取
本文主要讲Python最常见的应用之一——网络数据获取,即爬虫: 先介绍了网页和网络的基础知识,为从网页中获取数据打好基础;接下来以两个案例介绍从网络中获取数据和处理数据的不同方式,以进一步认识Python爬虫和数据处理。
cutercorley
2020/10/09
2.7K0
商业数据分析从入门到入职(9)Python网络数据获取
Python与C++、Java区别对比学习
Java 的数组和变量在存储上是有区别的。在 Java 中,变量是一种基本的数据结构,用于存储单个值。而数组则是一种复合数据类型,用于存储一系列相同类型的值。
CtrlX
2023/03/21
2.2K0
Python与C++、Java区别对比学习
【RAG落地利器】向量数据库Milvus教程:如何实现MetaData检索过滤
Milvus 在 Milvus 存储库中提供了 Docker Compose 配置文件。要使用 Docker Compose 安装 Milvus,只需运行
致Great
2025/01/21
5160
【RAG落地利器】向量数据库Milvus教程:如何实现MetaData检索过滤
MySQL 从入门到实践,万字详解!
数据库是往全栈发展不得不跨过的一道坎,大家不可避免会学到用到相关知识,最近查资料的时候发现网上很多内容要么就特别深,要么不成体系,对一些希望浅尝辄止仅仅是使用一下的人不太友好。最近刚好有机会学到 MySQL,集中一些时间学习了一下 MySQL 同时做了一些笔记,每个概念基本都有代码示例,每一行都是在下手打,读者可以直接复制了代码到命令行中运行,希望对大家有所帮助~ 😜 本文介绍的知识都不是特别深,目标用户是对 MySQL 零基础或弱基础的小伙伴们,可以帮助对 MySQL 建立一些概念,至少碰到相关问题知道
前端下午茶
2022/03/22
2.1K0
MySQL 从入门到实践,万字详解!
大数据存储技术之ClickHouse入门学习(二)
ClickHouse入门学习(一):https://blog.csdn.net/qq262593421/article/details/119514836
静谧星空TEL
2021/12/07
4.4K0
大数据存储技术之ClickHouse入门学习(二)
【建议收藏】历时一年的内网学习笔记合集
自 2020 年 11 月份至 2021 年 10 月份,在这近一年的时间里,笔者更新了自己在学习内网过程中的 30 余篇笔记,并将笔记同步更新到了自己的公众号、博客、CSDN 等平台,特在此整理成合集发布出来。
TeamsSix
2022/09/20
3.3K0
【建议收藏】历时一年的内网学习笔记合集
Java 编程问题:六、Java I/O 路径、文件、缓冲区、扫描和格式化
本章包括 20 个涉及文件 Java I/O 的问题。从操作、行走和观察流文件的路径,以及读/写文本和二进制文件的有效方法,我们将介绍 Java 开发人员可能面临的日常问题。
ApacheCN_飞龙
2022/07/11
2.6K0
小试牛刀—完整实例带你探究LR性能测试(PartA)
通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。
晴空SunnySky
2023/10/07
9600
SqlAlchemy 2.0 中文文档(七十五)
本指南介绍了 SQLAlchemy 1.1 版本的新功能,并记录了影响用户将其应用程序从 SQLAlchemy 1.0 系列迁移到 1.1 系列的变化。
ApacheCN_飞龙
2024/08/26
5060
【探花交友】day06—即时通信
如果是陌生人,通过《聊一下》功能进行打招呼,如果对方同意后,就成为了好友,可以进行聊天了。
陶然同学
2023/04/10
2K0
【探花交友】day06—即时通信
五万字 | Hive知识体系保姆级教程
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
数据社
2021/08/27
2.2K0
五万字 | Hive知识体系保姆级教程
Android Automotive Framework调试技巧
三次握手只是一个数据传输的过程,但是,我们传输前需要一些准备工作,比如将创建一个套接字,收集一些计算机的资源,将一些资源绑定套接字里面,以及接受和发送数据的函数等等,这些功能接口在一起构成了socket的编程
wizzie
2022/12/22
5.4K0
Android Automotive Framework调试技巧
推荐阅读
相关推荐
Jmeter系列(27)- 详解正则提取器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档