Leetcode:反转数字

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:

输入: 123
输出: 321

思路:分x正数与负数两种情况,将数字转化为字符串之后,再将字符串转换为字符数组,然后对字符串进行反转,反转完成倒回数字,并判断数字是否溢出

个人解法(java):

class Solution {
    public int reverse(int x) {
        int result = 0; 
        if(x >= 0) {
            //数字转化为字符串
            String s = String.valueOf(x);
            //字符串反转
            String s1 = reverse1(s);
            //字符串转化为数字并判断是否溢出
            try{
                result = Integer.valueOf(s1); 
            }catch(Exception e) {
                return 0;
            }          
        }
        else {
            String s = String.valueOf(-x);
            String s1 = reverse1(s);
            try{
                result = -Integer.valueOf(s1);
            }catch(Exception e) {
                return 0;
            }
        }
        return result;
        
    }
    public String reverse1(String s) {
        //字符串转化为字符数组
        char[] arr = s.toCharArray();
        for(int j = 0; j < s.length() / 2; j++) {
                char temp;
                temp = arr[j];
                arr[j]= arr[s.length() - j - 1];
                arr[s.length() - j - 1] = temp;
        }
        String s1 = Arrays.toString(arr).replaceAll("[\\[\\]\\s,]", "");
        return s1;
    }
}

较优解法(来自leetcode):
思路:倒转数字,先判断是否溢出,然后每次x的最低位数,作为新数ans较低位数添加在ans上,原ans乘10向前增大数字,x除以10去掉最低位数

public int reverse(int x) {
    int ans = 0;
    while (x != 0) {
        //判断是否溢出
        if ((ans * 10) / 10 != ans) {
            ans = 0;
            break;
        }
        //主要步骤
        ans = ans * 10 + x % 10;
        x = x / 10;
    }
    return ans;
}

官方解法:


image.png
class Solution {
    public int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            int pop = x % 10;
            x /= 10;
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
            rev = rev * 10 + pop;
        }
        return rev;
    }
}

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容