日期: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 }
解决截图: