各位帮我看下我哪错了,谢谢大家。
第五个用例无法通过
import java.lang.*; import java.util.*; import java.math.*; public class Main { //从两边向中间,逐渐将字符串改为回文串 /* 具体做法如下: //1.如果左右相等,或者右边的数小于左边的数,直接把右数变为i //例如4 xxx 2-->4 xxx 4 //否则,我们就要对字符串除最右数以外的部分进行+1操作,再把最右数变为最左数 (因为要求的回文数不能比原来的数小) //例如2 01 4->2 02 2 //2.对中间部分进行回文操作 */ public static String getHuiWen(String n) { if(n.length()<=1) return n; char i,j; int len=n.length(); i=n.charAt(0);//i为最左数 j=n.charAt(len-1);//j为最右数 if(i<j) { //n+1 n=pulsString(n.substring(0,len-1))+'i'; //位数增一的情况是字符串为99..99形式,由于i<j,所以这种情况不可能发生 i=n.charAt(0); } return i+getHuiWen(n.substring(1,len-1))+i; } //给字符串str代表的整数+1 public static String pulsString(String n) { int len=n.length(); char[] chs=n.toCharArray(); chs[len-1]++; while(len>0&&chs[len-1]=='9'+1){ chs[len-1]='0'; if(len==1) return '1'+String.valueOf(chs); chs[len-2]++; len--; } return String.valueOf(chs); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String n = scanner.nextLine(); System.out.println(getHuiWen(n)); } }