Java之递归方法的字符串回文问题

日期:2018.10.12

星期五

博客期:018

  题目:

  

  题目分析:本题目因为是要求用递归的,所以大类里就写一个递归方法,在主方法里用字符串调用这个方法就好了!这是大致这个类的框架定位,然后定位我们的递归方法!方法首先分为由判断分为递归域和执行域,一开始我的判断条件是输入的String类型的数据str与""(空串)相比相等!然后return true;递归域写起始字符与末尾字符是否相等,不等return false;相等就return 递归方法(参数为减去起始字符与末尾字符后的字符串),这就存在一定的问题——就是当字符串str的长度为奇数时,如”abtItba“,此程序无法继续执行!因为最后执行到返回字符串为"I",在删除的时候就会因为删两次,而第二次已经是空串,进而报错!于是,我便更改最初的判断条件为 str和""相等 或者 str.length==1时 return true;就可以了。

  解决代码:

   

 1 //如下为判断字符串是否回文的程序
 2 package madeby11;
 3 
 4 public class Palindrome {
 5     public boolean Test(String x){
 6         if(x.compareTo("")==0||x.length()==1)
 7         {
 8             return true;
 9         }
10         else
11         {
12             StringBuffer sb = new StringBuffer(x);
13             char t1,t2;
14             int temp = sb.length();
15             t1 = sb.charAt(0);
16             t2 = sb.charAt(temp-1);
17             sb.deleteCharAt(temp-1);
18             sb.deleteCharAt(0);
19             if(t1==t2)
20                 return Test(sb.toString());
21             else
22                 return false;
23         }
24     }
25     public static void main(String[] args) {
26         Palindrome p = new Palindrome();
27         String str = "SystemmetsyS";
28         System.out.println("Does the \""+str+"\" palindrome ?");
29         if(p.Test(str))
30             System.out.println("Yes!");
31         else
32             System.out.println("No!");
33     }
34 }

  解决截图:

  

  

猜你喜欢

转载自www.cnblogs.com/onepersonwholive/p/9776115.html