【发布时间】:2017-06-22 10:55:45
【问题描述】:
如果一个正整数在十进制系统中从左到右和从右到左读取时的表示相同,则称为回文。对于给定的不超过 1000000 位的正整数 K,将大于 K 的最小回文数的值写入输出。数字始终显示不带前导零。
import java.util.Scanner;
class next{
public static void main(String ags[])
{
Scanner in = new Scanner(System.in);
int n=in.nextInt();
for(int i=0;i<n;i++)
{
String s = in.next();
if(s.length()%2==0)
{
int p = s.length()/2;
String sub = s.substring(0,p);
String sub2= s.substring(p,s.length());
String reverse = new StringBuffer(sub).reverse().toString();
int t = Integer.parseInt(reverse);
int t1= Integer.parseInt(sub2);
if(t>t1)
{
System.out.println(sub+reverse);
}
else
{
int t2 = Integer.parseInt(sub)+1;
String s2 = Integer.toString(t2);
String rev = new StringBuffer(s2).reverse().toString();
System.out.println(s2+rev);
}
}
else
{
int len = s.length()/2;
String se1 = s.substring(0,len);
String se2 = s.substring(len+1,s.length());
String reverse = new StringBuffer(se1).reverse().toString();
int t = Integer.parseInt(reverse);
int t1= Integer.parseInt(se2);
if(t>t1)
{
String se = s.substring(0,len+1);
System.out.println(se+reverse);
}
else
{
String temp = s.substring(0,len+1);
int tn = Integer.parseInt(temp);
tn++;
String left = Integer.toString(tn);
String grip = left.substring(0,left.length()-1);
String reve = new StringBuffer(grip).reverse().toString();
System.out.println(left+reve);
}
}
}
}
}
我是编程初学者。我正在尝试解决这个问题 #PALIN on spoj ,但即使它正在 ideone 上运行,我也会遇到运行时错误。请帮助我
【问题讨论】:
-
请描述问题,尝试在问题中添加更多细节。