日期:2018.10.12
星期五
博客期:018
题目:
题目分析:本题目因为是要求用递归的,所以大类里就写一个递归方法,在主方法里用字符串调用这个方法就好了!这是大致这个类的框架定位,然后定位我们的递归方法!方法首先分为由判断分为递归域和执行域,一开始我的判断条件是输入的String类型的数据str与""(空串)相比相等!然后return true;递归域写起始字符与末尾字符是否相等,不等return false;相等就return 递归方法(参数为减去起始字符与末尾字符后的字符串),这就存在一定的问题——就是当字符串str的长度为奇数时,如”abtItba“,此程序无法继续执行!因为最后执行到返回字符串为"I",在删除的时候就会因为删两次,而第二次已经是空串,进而报错!于是,我便更改最初的判断条件为 str和""相等 或者 str.length==1时 return true;就可以了。
解决代码:
1 //如下为判断字符串是否回文的程序
2 packagemadeby11;3
4 public classPalindrome {5 public booleanTest(String x){6 if(x.compareTo("")==0||x.length()==1)7 {8 return true;9 }10 else
11 {12 StringBuffer sb = newStringBuffer(x);13 chart1,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 returnTest(sb.toString());21 else
22 return false;23 }24 }25 public static voidmain(String[] args) {26 Palindrome p = newPalindrome();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 }
解决截图: