首先,得了解啥是回文,这个我了解了,不了解的自己去百度(o(´^`)o)。 首先 分析问题,判断回文就是需要从判断第一个与最后一个是否一样,第二个和倒数第二个是否一样,第三个和倒数第三个........依次类推,可能的需要注意的情况有三种:奇数、偶数、就一个字符。 首先,先从简单的不使用递归的方式来写: //判断是否是回文import java.util.Scanner; public class Testpalindrome { public static void main(String args[]) { System.out.println("请输入一段字符串:"); Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); int a=str.length();//判断字符串的长度 if(a%2==0) { for(int i=0;i<a;i ) { if(str.charAt(i)!=str.charAt(a-1-i)) { System.out.println("所输入的字符串不是回文"); break; } if(i==a/2) { System.out.println("所输入的字符串是回文"); break; } } } if(a%2==1) { for(int i=0;i<a;i ) { if(str.charAt(i)!=str.charAt(a-1-i)) { System.out.println("所输入的字符串不是回文"); break; } if(i==(a 1)/2) { System.out.println("所输入的字符串是回文"); break; } } } } }
这个是很容易就能写出的,然后就是使用递归方法的: //判断是否是回文 使用递归的方法import java.util.Scanner; public class Testpalindrome1 { public static void main(String args[]) { System.out.println("请输入一段字符:"); Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); if(palindromeN(str,0,str.length()-1)) { System.out.println("字符串是回文"); } else { System.out.println("字符串不是回文"); } } public static boolean palindromeN(String str,int a,int b) //a 和 b 相当于两个指针; { if(a>=b) { return true; } if(str.charAt(a)==str.charAt(b)) { return palindromeN(str, a,--b); } else { return false; } }
就是比较头和尾 然后各自减一 再调用原函数进行判断,很明显,使用递归比不使用递归节省了很多代码长度 来源:https://www./content-4-467051.html |
|