java判断回文字符串几种简单的实现

举报
风吹稻花香 发表于 2021/06/04 23:32:39 2021/06/04
【摘要】 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.将字符串倒置后逐一比较,实现如下:

[java]  view plain  copy
 
  1. public class HuiWenTest {  
  2. /** 
  3.  * @SERLIN 
  4.  */  
  5. public static void main(String[] args) {  
  6.     String str = "";  
  7.     System.out.println("请输入一个字符串");  
  8.     Scanner input = new Scanner(System.in);  
  9.     str = input.next();  
  10.   
  11.     StringBuffer sb = new StringBuffer(str);  
  12.     sb.reverse();// 将Str中的字符串倒置  
  13.   
  14.     int count = 0;  
  15.     for (int i = 0; i < str.length(); i++) {  
  16.         if (str.charAt(i) == sb.charAt(i)) {  
  17.             count++;  
  18.         }  
  19.     }  
  20.     if (count == str.length()) {  
  21.           
  22.         System.out.println("此字符串是一个回文字符串");  
  23.     } else {  
  24.         System.out.println("此字符串不是一个回文字符串");  
  25.     }  
  26. }  

 


2.将字符串倒置后创建新字符串直接比较,实现如下:

 

 

[java]  view plain  copy
 
  1. public class HuiWenTest2 {  
  2.     /** 
  3.      * @SERLIN 
  4.      */  
  5.     public static void main(String[] args) {  
  6.         System.out.println("请输入一个字符串");  
  7.         Scanner input = new Scanner(System.in);  
  8.         String str = input.next();  
  9.         StringBuilder sb=new StringBuilder(str);  
  10.         sb.reverse();//将str倒置的方法  
  11.         String newStr=new String(sb);  
  12.         if(str.equals(newStr)){  
  13.             System.out.println(str+"是回文字符串");  
  14.         }else{  
  15.             System.out.println(str+"不是回文字符串");  
  16.         }  
  17.     }  
  18. }  

 


3.使用截取字符串的方式比较,实现如下:

 

 

[java]  view plain  copy
 
  1. public class HuiWenTest3 {  
  2.     /** 
  3.      * @SERLIN 
  4.      */  
  5.     public static void main(String[] args) {  
  6.         System.out.println("请输入一个字符串");  
  7.         Scanner input = new Scanner(System.in);  
  8.         String str = input.next();  
  9.         int count = 0;  
  10.         for (int i = 0; i < str.length() / 2; i++) {  
  11.         if ((str.substring(i, i + 1)).equals(str.substring(str.length() - 1- i, str.length() - i))) {  
  12.                 count++;  
  13.             }  
  14.         }  
  15.         if (count == str.length() / 2) {  
  16.             System.out.println("是回文字符串");  
  17.         }else{  
  18.             System.out.println("不是回文字符串");  
  19.         }  
  20.     }  
  21. }  

 


4.判断回文数字(判断纯数字),实现如下

 

 

[java]  view plain  copy
 
  1. public class HuiWenNum {  
  2.     /** 
  3.      * @SERLIN 
  4.      */  
  5.     public static void main(String[] args) {  
  6.         int n;  
  7.         System.out.println("请输入一个整数:");   
  8.         // 如果结果为回文数,跳出循环  
  9.         while (true) {  
  10.             Scanner InpuNum = new Scanner(System.in);  
  11.             n = InpuNum.nextInt();  
  12.             if (isHuiWen(n)) {  
  13.                 System.out.println(n + "是回文数!");  
  14.                 break;  
  15.             } else {  
  16.                 System.out.println(n + "不是回文数!");  
  17.             }  
  18.         }  
  19.     }  
  20.   
  21.   
  22.     // 判断的数字是否是回文数  
  23.     public static boolean isHuiWen(int n) {  
  24.         int m = reverse(n);  
  25.         if (m == n) {  
  26.             return true;  
  27.         } else {  
  28.             return false;  
  29.         }  
  30.     }  
  31.   
  32.   
  33.     // 将输入的数字进行倒置,以便进行判断是否是回文数  
  34.     public static int reverse(int n) {  
  35.         int temp = 0;// 临时变量  
  36.         int j = 0;// 倒置后的数字  
  37.         temp = n;// 将输入的数字赋值给临时变量  
  38.         while (temp != 0) {  
  39.             j = j * 10 + temp % 10;  
  40.             temp /= 10;  
  41.         }  
  42.         return j;  
  43.     }  
  44. }  

 

 

·回文数的定义:

对于非负数 其左右两边完全相同 则是回文。 e.g: 121 11 等

对于负数 其绝对值左右两边完全相同 则是回文。 e.g: -121 -11 等

 

设计一个算法判断给定的数是否为回文数,如果是,输出true 反之 输出false;

 

贴代码:

[cpp]  view plain  copy
 
  1. #include <iostream>  
  2. #include <math.h>  
  3.   
  4. using namespace std;  
  5.   
  6. bool isPadlindrome(int n)  
  7. {  
  8.     // 如果是int类型的最小值 显然不是回文数  
  9.     if (n == INT_MIN)  
  10.     {  
  11.         return false;  
  12.     }  
  13.   
  14.     // 绝对值  
  15.     n = abs(n);  
  16.   
  17.     int tmp = 1;  
  18.   
  19.     // 将tmp位数变为与n一致  
  20.     while(n / tmp >= 10) // 防止tmp溢出  
  21.     {  
  22.         tmp *= 10;  
  23.     }  
  24.   
  25.     // n = 0 表示所有位比较完  
  26.     while(n != 0)  
  27.     {  
  28.         // 最高位 != 最低位  
  29.         if (n / tmp != n % 10)  
  30.         {  
  31.             return false;  
  32.         }  
  33.   
  34.         // 最高位 = 最低位 去掉最高位 去掉最低位  
  35.         // 继续比较  
  36.         n = (n % tmp) / 10;  
  37.         tmp /= 100;  
  38.     }  
  39.   
  40.     return true;  
  41. }  
  42.   
  43. int main(void)  
  44. {  
  45.     int n;  
  46.     cin>>n;  
  47.   
  48.     if (isPadlindrome(n))  
  49.     {  
  50.         cout<<"true"<<endl;  
  51.     }  
  52.     else  
  53.     {  
  54.         cout<<"false"<<endl;  
  55.     }  
  56.   
  57.     return 0;  
  58. }  

 

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/78268642

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。