首页 > 代码库 > 大于非负整数N的第一个回文数 Symmetric Number

大于非负整数N的第一个回文数 Symmetric Number

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                 else41                 {42                     temp=String.valueOf(Integer.parseInt(temp)+1); //加一43                     //本身加倒置组成新的String44                     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                     else63                     {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 }

 

大于非负整数N的第一个回文数 Symmetric Number