leetcode-7 整数反转

一、题目:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

二、解题思路:

  1.  题意理解:  给定一个32 位的有符号整数 x,将数字倒排,如果倒排后是值不在32有符号整数范围内就返回0。
  2.  解题思路:    将该整数转为字符串,先排除符号,利用StringBuilder根据索引将字符倒过拼接,拼接后处理无效0的字符,之后转为int类型,用try,catch抓取异常如果有异常说明反转后的数不在32有符号整数范围内返回0即可代码如下:
    class Solution {
        public int reverse(int x) {
            boolean falg = false;//符号标识为负数时 flag = true
            String str = String.valueOf(x);
            if (str.startsWith("-")){  // 去除符号
                str = str.substring(1);
                falg = true;
            }
            StringBuilder reverse = new StringBuilder();
            int length = str.length();
            for (int i = length -1; i >= 0; i--) { //倒过来拼接字符
                reverse.append(str.charAt(i));
            }
            str = String.valueOf(reverse);
            for (int i = 0; i < str.length() - 1 ; i++) { // 去除反转后无效的数字0
                if (!"0".equals(String.valueOf(str.charAt(i)))){
                    str =  str.substring(i);
                    break;
                }
            }
            if (falg){
                str = "-" + str;
            }
            try {
                x = Integer.parseInt(str);//有异常说明反转后的数值不在  [−231,  231 − 1] 范围内返回 0
            } catch (NumberFormatException e) {
                return 0;
            }
            return x;
        }
    }

    大佬解法:

    
    class Solution {
        public int reverse(int x) {
            int res = 0;
            while(x!=0) {
                //每次取末尾数字
                int tmp = x%10;
                //判断是否 大于 最大32位整数
                if (res>214748364 || (res==214748364 && tmp>7)) {
                    return 0;
                }
                //判断是否 小于 最小32位整数
                if (res<-214748364 || (res==-214748364 && tmp<-8)) {
                    return 0;
                }
                res = res*10 + tmp;
                x /= 10;
            }
            return res;
        }
    }	
    

上一篇:Java 实现字符串的反转三种方式


下一篇:判断整数、数组颠倒reverse,数组转换字符串,join、toString、toLocaleString