题解 | #进制转换#

进制转换

http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

按照公式 result = 个位*1 + 十位*16 + 百位*16^2... 计算即可。 注意初始化一下十六进制各个 char(0-F)对应的数字。

public class HexToDec {
    private static final Map<Character, Integer> charMap = new HashMap();
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String hex = in.nextLine();
            String result = solution(hex);
            System.out.println(result);
        }
    }
    
    // init map
    private static void initMap() {
        char tempChar = 'A';
        int tempInt = 10;
        while (tempChar <= 'F') {
            charMap.put(tempChar++, tempInt++);
        }
        tempChar = '0';
        tempInt = 0;
        while (tempChar <= '9') {
            charMap.put(tempChar++, tempInt++);
        }
    }

    private static String solution(String input) {
        // boundary check
        if (!input.startsWith("0x") || input.length() <= 2) {
            return "";
        }

        int length = input.length(), i = length, base = 1;
        int result = 0;
        while (--i >= 2) {
            char currentChar = input.charAt(i);
            result += charMap.get(currentChar) * base;
            base *= 16;
        }
        return Integer.toString(result);
    }
}
全部评论

相关推荐

11-08 17:36
诺瓦科技_HR
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务