java判断回文字符串几种简单的实现
【摘要】 11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进步,关注我,给你分享更多干货知识!
java判断回文字符串几种简单的实现:1.将字符串倒置后逐一比较,实现如下:
[java] view plain&n...
11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进步,关注我,给你分享更多干货知识!
java判断回文字符串几种简单的实现:
1.将字符串倒置后逐一比较,实现如下:
- public class HuiWenTest {
- /**
- * @SERLIN
- */
- public static void main(String[] args) {
- String str = "";
- System.out.println("请输入一个字符串");
- Scanner input = new Scanner(System.in);
- str = input.next();
- StringBuffer sb = new StringBuffer(str);
- sb.reverse();// 将Str中的字符串倒置
- int count = 0;
- for (int i = 0; i < str.length(); i++) {
- if (str.charAt(i) == sb.charAt(i)) {
- count++;
- }
- }
- if (count == str.length()) {
- System.out.println("此字符串是一个回文字符串");
- } else {
- System.out.println("此字符串不是一个回文字符串");
- }
- }
2.将字符串倒置后创建新字符串直接比较,实现如下:
- public class HuiWenTest2 {
- /**
- * @SERLIN
- */
- public static void main(String[] args) {
- System.out.println("请输入一个字符串");
- Scanner input = new Scanner(System.in);
- String str = input.next();
- StringBuilder sb=new StringBuilder(str);
- sb.reverse();//将str倒置的方法
- String newStr=new String(sb);
- if(str.equals(newStr)){
- System.out.println(str+"是回文字符串");
- }else{
- System.out.println(str+"不是回文字符串");
- }
- }
- }
3.使用截取字符串的方式比较,实现如下:
- public class HuiWenTest3 {
- /**
- * @SERLIN
- */
- public static void main(String[] args) {
- System.out.println("请输入一个字符串");
- Scanner input = new Scanner(System.in);
- String str = input.next();
- int count = 0;
- for (int i = 0; i < str.length() / 2; i++) {
- if ((str.substring(i, i + 1)).equals(str.substring(str.length() - 1- i, str.length() - i))) {
- count++;
- }
- }
- if (count == str.length() / 2) {
- System.out.println("是回文字符串");
- }else{
- System.out.println("不是回文字符串");
- }
- }
- }
4.判断回文数字(判断纯数字),实现如下
- public class HuiWenNum {
- /**
- * @SERLIN
- */
- public static void main(String[] args) {
- int n;
- System.out.println("请输入一个整数:");
- // 如果结果为回文数,跳出循环
- while (true) {
- Scanner InpuNum = new Scanner(System.in);
- n = InpuNum.nextInt();
- if (isHuiWen(n)) {
- System.out.println(n + "是回文数!");
- break;
- } else {
- System.out.println(n + "不是回文数!");
- }
- }
- }
- // 判断的数字是否是回文数
- public static boolean isHuiWen(int n) {
- int m = reverse(n);
- if (m == n) {
- return true;
- } else {
- return false;
- }
- }
- // 将输入的数字进行倒置,以便进行判断是否是回文数
- public static int reverse(int n) {
- int temp = 0;// 临时变量
- int j = 0;// 倒置后的数字
- temp = n;// 将输入的数字赋值给临时变量
- while (temp != 0) {
- j = j * 10 + temp % 10;
- temp /= 10;
- }
- return j;
- }
- }
·回文数的定义:
对于非负数 其左右两边完全相同 则是回文。 e.g: 121 11 等
对于负数 其绝对值左右两边完全相同 则是回文。 e.g: -121 -11 等
设计一个算法判断给定的数是否为回文数,如果是,输出true 反之 输出false;
贴代码:
- #include <iostream>
- #include <math.h>
- using namespace std;
- bool isPadlindrome(int n)
- {
- // 如果是int类型的最小值 显然不是回文数
- if (n == INT_MIN)
- {
- return false;
- }
- // 绝对值
- n = abs(n);
- int tmp = 1;
- // 将tmp位数变为与n一致
- while(n / tmp >= 10) // 防止tmp溢出
- {
- tmp *= 10;
- }
- // n = 0 表示所有位比较完
- while(n != 0)
- {
- // 最高位 != 最低位
- if (n / tmp != n % 10)
- {
- return false;
- }
- // 最高位 = 最低位 去掉最高位 去掉最低位
- // 继续比较
- n = (n % tmp) / 10;
- tmp /= 100;
- }
- return true;
- }
- int main(void)
- {
- int n;
- cin>>n;
- if (isPadlindrome(n))
- {
- cout<<"true"<<endl;
- }
- else
- {
- cout<<"false"<<endl;
- }
- return 0;
- }
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/78268642
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)