【Lintcode】763. Hex Conversion

题目地址:

https://www.lintcode.com/problem/hex-conversion/description

给定一个十进制非负整数,将其转化为 k k k进制数,其中 k ∈ { 2 , 3 , . . . , 16 } k\in\{2,3,...,16\} k{2,3,...,16}。输出要求是字符串类型。

思路是用栈,将 n n n k k k取余,取余的结果入栈,然后对 n / k n/k n/k进行相同的操作,直到 n / k n/k n/k成为 0 0 0为止。最后从栈顶到栈底形成的数字即为所求。代码如下:

public class Solution {
    /**
     * @param n: a decimal number
     * @param k: a Integer represent base-k
     * @return: a base-k number
     */
    public String hexConversion(int n, int k) {
        // write your code here
        String dig = "0123456789ABCDEF";
        // 直接用一个StringBuilder当作栈来用
        StringBuilder sb = new StringBuilder();
        
        do {
            sb.append(dig.charAt(n % k));
            n /= k;
        } while (n > 0);
        
        // 最后要记得翻转一下
        return sb.reverse().toString();
    }
}

时空复杂度 O ( log ⁡ n ) O(\log n) O(logn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值