欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2019.3.26判断是否回文(java实现)

程序员文章站 2022-04-08 19:05:24
今天java老师作业题目是判断是一个字符串否是回文; emmmm,我的思路是将字符串逆序,然后使用方法 System.out.println(s1.equals(s2));作为比较。 后来我使用 char[] ch = str.toCharArray(); 将字符串转换为字符数组,在用for循环将其 ......
我所有的文章都是对我总结学习的总结,那里不好或者冒犯了那里,我先对您说声对不起,请告知我进行改正。

今天java老师作业题目是判断是一个字符串否是回文;


emmmm,我的思路是将字符串逆序,然后使用方法 system.out.println(s1.equals(s2));作为比较。


后来我使用    char[] ch = str.tochararray();   


将字符串转换为字符数组,在用for循环将其逆序,后发现不知道怎么返回做对比;


后参考网上例子,写出如下代码


public class stringdemo {
    public static void main(string[] args) {
        string str = "abcdcbb";
        system.out.println(ishuiwen(str));
    }
    public static boolean ishuiwen(string str){
    int lenth = str.length();
        for (int i = 0; i < lenth/2; i++) {
            if(str.tochararray()[i]!=str.tochararray()[lenth-i-1]){//判断头尾是否相同
                return false;
            }
        }
        return true;

 


最后总结,总体代码简单,循环中只要使用tochararray方法,使字符串中i的转换为数组值,与相应的位置做对比即可判断是否是回文。
下面粘贴一下别人写得,作为参考:
将字符串倒置后逐一比较,实现如下:


将字符串倒置后逐一比较,实现如下:


 1 public static void main(string[] args) {
 2 
 3                    string str = "";
 4 
 5                    system.out.println("请输入一个字符串");
 6 
 7                    scanner input = new scanner(system.in);
 8 
 9                    str = input.next();
10 
11  
12 
13                    stringbuffer sb = new stringbuffer(str);
14 
15                    sb.reverse();// 将str中的字符串倒置
16 
17  
18 
19                    int count = 0;
20 
21                    for (int i = 0; i < str.length(); i++) {
22 
23                             if (str.charat(i) == sb.charat(i)) {
24 
25                                      count++;
26 
27                             }
28 
29                    }
30 
31                    if (count == str.length()) {
32 
33                            
34 
35                             system.out.println("此字符串是一个回文字符串");
36 
37                    } else {
38 
39                             system.out.println("此字符串不是一个回文字符串");
40 
41                    }
42 
43          }

 


 


 


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


 1 public static void main(string[] args) {
 2 
 3                    system.out.println("请输入一个字符串");
 4 
 5                    scanner input = new scanner(system.in);
 6 
 7                    string str = input.next();
 8 
 9                    stringbuilder sb=new stringbuilder(str);
10 
11                    sb.reverse();//将str倒置的方法
12 
13                    string newstr=new string(sb);
14 
15                    if(str.equals(newstr)){
16 
17                             system.out.println(str+"是回文字符串");
18 
19                    }else{
20 
21                             system.out.println(str+"不是回文字符串");
22 
23                    }
24 
25          }
26 
27  

 


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


 1 public static void main(string[] args) {
 2                    system.out.println("请输入一个字符串");
 3                    scanner input = new scanner(system.in);
 4                    string str = input.next();
 5                    int count = 0;
 6                    for (int i = 0; i < str.length() / 2; i++) {
 7                    if ((str.substring(i, i + 1)).equals(str.substring(str.length() - 1- i, str.length() - i))) {
 8                                      count++;
 9                             }
10                    }
11                    if (count == str.length() / 2) {
12                             system.out.println("是回文字符串");
13                    }else{
14                             system.out.println("不是回文字符串");
15                    }
16          }
17  

 


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


 

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;

         }

}

 

 


注:以上内容引用自https://blog.csdn.net/u013248516/article/details/38044979