1.题目
如标题,求大于整数N(N>=0)的第一个回文数的字符串表示形式。
2.样例
1 --> 2
9 -->11
12345 -->12421
123456 -->124421
999 -->1001
3.分析
借用:http://www.cnblogs.com/xudong-bupt/p/4015226.html
4.代码
1 import java.util.Scanner; 2 3 4 public class SymmetricNumber { 5 6 7 public static void main(String[] argv){ 8 9 Scanner in=new Scanner(System.in); 10 int N=in.nextInt(); 11 String n=String.valueOf(N); 12 13 //特殊情况:9999999999999......... 14 if((N+1)%10==0) 15 System.out.print(N+2); 16 17 //非特殊情况 18 else 19 { 20 21 if(n.length()==1){ 22 System.out.println(N+1); 23 } 24 else{ 25 26 //偶数位 27 if(n.length()%2==0){ 28 String temp=n.substring(0,n.length()/2); 29 String temp_0=n.substring(n.length()/2,n.length()); 30 String temp_1=""; 31 for(int i=n.length()/2-1;i>=0;i--){ 32 temp_1=temp_1+temp.charAt(i); 33 } 34 35 //大于的话则直接输出前半部分和前半部分的倒置 36 if(Integer.parseInt(temp_1)>Integer.parseInt(temp_0)) 37 System.out.println(temp+temp_1); 38 39 //否则前半部分加一,然后新的temp与temp的倒置组成新的String 输出 40 else 41 { 42 temp=String.valueOf(Integer.parseInt(temp)+1); //加一 43 //本身加倒置组成新的String 44 for(int i=temp.length()-1;i>=0;i--){ 45 temp=temp+temp.charAt(i); 46 } 47 System.out.println(temp); 48 } 49 50 } 51 52 //奇数位 53 else{ 54 String temp_0=n.substring((n.length()+1)/2,n.length()); 55 String temp=n.substring(0,(n.length()+1)/2); 56 String temp_1=""; 57 for(int i=temp.length()-2;i>=0;i--){ 58 temp_1=temp_1+temp.charAt(i); 59 } 60 if(Integer.parseInt(temp_1)>Integer.parseInt(temp_0)) 61 System.out.println(temp+temp_1); 62 else 63 { 64 temp=String.valueOf(Integer.parseInt(temp)+1); 65 for(int i=temp.length()-2;i>=0;i--){ 66 temp=temp+temp.charAt(i); 67 } 68 System.out.println(temp); 69 } 70 } 71 72 } 73 74 } 75 76 } 77 }
时间: 2024-10-08 20:23:01