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


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   
  2. #include   
  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"<
  51.     }  
  52.     else  
  53.     {  
  54.         cout<<"false"<
  55.     }  
  56.   
  57.     return 0;  
  58. }  

你可能感兴趣的:(java)