LeetCode #07:整数反转
内容纲要

题目

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围  [-2147483648,  2147483647] ,就返回

假设环境 不允许存储 64 位整数(有符号或无符号)。

提示

-2147483648 <= x <= 2147483647

思路

我的思路跟普通人一样,是转成字符串然后反转字符串最后再调用工具类将字符串重新转回int类型,这个过程需要注意字符串反转后可能会超出int类型的范围,题目的意思是超出范围则返回0,因此我们捕获出超出范围的异常后返回0即可。但是这样使用的内存和代码运行时间都会非常高。全程思路在演示代码中给出。

/**
 * @author: LoungeXi
 */
public class Solution {
    public int reverse(int x) {
        // try/catch捕获出超出int范围的异常后返回 0
        try {
           // 因为字符串反转后有可能有前置0,因此设置一个哨兵来查看什么时候开始加入首个字符
            boolean flag = false;
            // 使用 StringBuilder 拼接
            StringBuilder stringBuilder = new StringBuilder();
            // 如果传入的整数 <0 ,则先在 StringBuilder 中加入一个负号后转换整数的符号,然后正常判断即可,这样最后反转后负号还是存在最前面
            if (x < 0) {
                stringBuilder.append("-");
                x = -x;
            }
            // 将整数转为字符串
            String str = x + "";
            // 从字符串的尾部向前判断
            int now = str.length() - 1;
            // 还没进行到字符串头则继续循环
            while (now >= 0) {
                // 得到当前判断的字符
                char ch = str.charAt(now);
                // 若前置0还没判断完,则哨兵不变,直接 now--;
                if (ch != '0') {
                    flag = true;
                }
                // 当哨兵改变后则一个一个加入 stringBuilder
                if (flag) {
                    stringBuilder.append(ch);
                }
                // 指针前移
                now--;
            }
            // 利用工具类将 stringBuilder 转为int类型,这一步若超出 int 类型范围则会抛出异常
            return Integer.parseInt(stringBuilder.toString().trim());
        } catch (Exception e) {
            // 若捕获到异常返回 0
            return 0;
        }
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
变装