力扣题解之:整数翻转

2021-02-25 18:23:37  卢浮宫  版权声明:本文为站长原创文章,转载请写明出处


一、题目


    给你一个32位的有符号整数x,返回x中每位上的数组翻转后的结果。

    如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。
    假设环境不允许存储 64 位整数(有符号或无符号)。


二、解题思路

    

    ① 首先可以使用字符翻转来解决,相关的支持有StringBuild或StringBuffer的reverse()方法

    ② 也可以使用模运算来进行操作,一次从个位往后取值操作

    ③ 字符操作需要注意的事项:负数需要额外处理,字符转整数会有一个溢出的异常问题存在

    ④ 模运算操作需要注意的有:边界值处理、模运算操作


三、解题答案


    3.1、字符处理


    class Solution {
public int reverse(int x) {
try {
StringBuffer rlt = new StringBuffer();
rlt.append(String.valueOf(x)).reverse();
if(x < 0){
rlt = new StringBuffer("-").append(rlt.substring(0, rlt.length() - 1));
}
return Integer.parseInt(rlt.toString());
}catch (Exception e){
return 0;
}
}
}

    

    3.2、模运算处理


    class Solution {
public int reverse(int x) {
int y = 0;
while (x != 0) {
if (y > 214748364 || y < -214748364) {
return 0;
}
y = y * 10 + x % 10;
x = x / 10;
}
return y;
}
}

    

四、执行效果



更多精彩,请持续关注:guangmuhua.com


最新评论: