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

相关推荐

不愿透露姓名的神秘牛友
07-08 10:39
一个证都没&nbsp;我能填什么
程序员小白条:别人有,你为什么没有,还是这个道理,社会就是比较,竞争,淘汰,你要安逸,那么就要做好淘汰的准备
点赞 评论 收藏
分享
07-02 22:46
门头沟学院 Java
码农索隆:hr:“管你投没投,先挂了再说”
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
40
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务