2019.3.26判断是否回文(java实现)
程序员文章站
2023-02-18 17:47:07
今天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
上一篇: ThreadLocal原理