题目描述:
给出一个 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;i<t.length/2;i++){ 16 c=t[i]; 17 t[i]=t[t.length-1-i]; 18 t[t.length-1-i]=c; 19 } 20 s=new String(t); 21 } 22 if(s.length()==10&&x>0)//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 }
原文:https://www.cnblogs.com/hzhqiang/p/10826864.html