7. 整数反转

leetcode刷题

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

**解题思路:
方法一:第一思路就是先把数字转为字符串,然后对字符串进行反转,然后再把字符串转为int;
判断正、负、即可。
因为会出现溢出问题,所以就try、catch进行捕获了。
方法二
数学方法:123
找到最后一个数字x%10=3
然后新的x=x/10
**

class Solution{
	public int reverse(int x){
		int y = 0;
		while(x!=0){
		//这里要除以10,是因为你之后成了10,所以这块要先剔除出去!!!
			if(y>Integer.MAX_VALUE/10 || y<Integer.MIN_VALUE/10){
				return 0;
			}
			y = y*10 + x%10;
			x = x/10;
		}
		return y;
	}
}
class Solution {
    public int reverse(int x) {
        int y = 0;
        int res = 0;
        while(x!=0){
            if(res>Integer.MAX_VALUE/10 || res<Integer.MIN_VALUE/10) return 0;/
            y = x%10;
            x = x/10;
            res = res*10 + y;
        }
        return res;
    }
}
class Solution {
    public int reverse(int x) {
    
        String s = String.valueOf(x);
        StringBuilder sb = new StringBuilder();
        
        int flag = s.charAt(0) == '-' ? -1 : 1;

        if(flag==-1){
            for(int i=s.length()-1;i>0;i--){
                sb.append(s.charAt(i));
            }
        }else{
            for(int i=s.length()-1;i>=0;i--){
                sb.append(s.charAt(i));
            }
        }

        try{    
            int result = Integer.valueOf(sb.toString());

            if(flag==-1){
                return result*(-1);              
            }else{
                return result;  
            }
        }catch(Exception e){
            return 0;
        }
    }
}

你可能感兴趣的:(7. 整数反转)