四时宝库

程序员的知识宝库

LeetCode刷题:7.整数反转(整数反转js)

一、题目梗概

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

如果反转后整数超过 32 位的有符号整数的范围 ,就返回 0。

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

链接:https://leetcode-cn.com/problems/reverse-integer

示例:

输入:x = 123
输出: 321

二、解答

方案一:数学计算

class Solution {

public int reverse(int x) {

int res=0;

int flag=0;

if(x>=0) flag=1;

x=Math.abs(x);

while(x!=0){

//(res*10+x%10)>Integer.MAX_VALUE,因为限制32位,所以需要转换成下面的方程式判断

if(res>((Integer.MAX_VALUE-x%10)/10)){

return 0;

}

res=res*10+x%10;

x=x/10;

}

return flag==1?res:-res;

}

}

方案二:字符串反转,再借助try/catch判断溢出

class Solution {

public int reverse(int x) {

StringBuilder stringBuilder = new StringBuilder();

int a = Math.abs(x);

String s = new StringBuilder(String.valueOf(a)).reverse().toString();

if(x<0){

stringBuilder.append('-');

}

String s1 = stringBuilder.append(s).toString();

try{

return Integer.parseInt(s1);

}catch(Exception e){

return 0;

}

}

}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接