LeetCode之基础数据类型

2018/10/29 leetcode

刷刷leetcode,锻炼代码思维~

007-ReverseInteger

Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
    public int reverse(int x) {
        long tmp = x;
        long result = 0;

        while (tmp != 0) {
            result = result * 10 + tmp % 10;
            tmp = tmp / 10;
        }

        if (result < Integer.MIN_VALUE || result > Integer.MAX_VALUE) {
            result = 0;
        }

        return (int) result;
    }

解题思路,核心思想——取余,按照10进行while循环,直到为0为止。

012-IntegerToRoman

输入一个数字,将它转成一个罗马数字,输入的数字在[1, 3999]之间
public String intToRoman(int num) {

    String[][] base = new String[][]{
            {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}, // 个位的表示
            {"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}, // 十位的表示
            {"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}, // 百倍的表示
            {"M", "MM", "MMM", "", "", "", "", "", ""}}; // 千位的表示


    String result = "";

    // 每除一次就示处理后一个数位(从小到大)
    // i记录当前处理的是第几个数位
    for (int i = 0; num != 0; num /= 10, i++) {
        // 如果不为0,说明这个数位上有值,要进行相加操作
        if (num % 10 != 0) {
            // 拼接结果
            result = base[i][num % 10 - 1] + result;
        }
    }

    return result;
}

很简单,每一位10取余,得到的结果在数组里面寻找相应的字符然后字符串拼接。

Search

    Table of Contents