JAVA版 《进制转换》

进制转换

http://www.nowcoder.com/questionTerminal/2cc32b88fff94d7e8fd458b8c7b25ec1

算法思路: 除N取余,然后倒序排列,高位补零。

public String solve (int M, int N) {
        // write code here
        if(M == 0)  return "0";
        String s = "0123456789ABCDEF";
        StringBuffer sb = new StringBuffer();
        boolean f = false;
        if(M < 0){
            f = true;
            M = -M;
        }
        while(M != 0){
            sb.append(s.charAt(M%N));
            M /= N;
        }
        if(f) sb.append("-");
        return sb.reverse().toString();
    }
}

全部评论
算法有问题,针对极端情况 Integer.MIN_VALUE, M = -M; 会有问题
4 回复 分享
发布于 2021-07-29 16:04
可以优化一下,没有必要 用res += s.charAt 这样,可以直接在之前就定义 StringBuilder, 然后直接append,否则,String 的+ 号每次会返回一个新的string,性能会比较差。
1 回复 分享
发布于 2021-01-30 23:03
负数有问题!应该用补码!
点赞 回复 分享
发布于 2021-09-21 16:48

相关推荐

10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
40 收藏 评论
分享
牛客网
牛客企业服务