首页 > 代码库 > 大于非负整数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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。