题目描述:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
分析:用java解可以先将整数转为字符串再转为字符数组,再翻转,然后再转为整数
麻烦的一点是超出范围的解决,这一点可以通过字符串比较解决。
1 class Solution { 2 public int reverse(int x) { 3 String s=Integer.toString(x); 4 char[] t=s.toCharArray(); 5 char c; 6 if(x<0){ //复数从下标1开始翻转 7 for(int i=1;i<=t.length/2;i++){ 8 c=t[i]; 9 t[i]=t[t.length-i];10 t[t.length-i]=c;11 }12 s=new String(t);13 }14 else{ //正数从下标0开始15 for(int i=0;i0)//length为10时正数可能超界23 if(s.compareTo("2147483647")>0)24 return 0;25 if(s.length()>10)26 if(s.compareTo("-2147483647")>0)return 0;27 return Integer.parseInt(s);28 }29 }