各位帮我看下我哪错了,谢谢大家。
第五个用例无法通过
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));
}
}