zoukankan      html  css  js  c++  java
  • [leetcode] 12. Integer to Roman

    关于罗马数字:

    I: 1
    V: 5
    X: 10
    L: 50
    C: 100
    D: 500
    M: 1000

    字母可以重复,但不超过三次,当需要超过三次时,用与下一位的组合表示:
    I: 1, II: 2, III: 3, IV: 4
    C: 100, CC: 200, CCC: 300, CD: 400

    提取每一位digit,然后convert to 罗马数字

    public class Solution {
        private static char[][] chars = {{'I', 'V'}, {'X', 'L'}, {'C', 'D'}, {'M', 'O'}};
        public String intToRoman(int num) {
            int copy_num = num;
            int count = 0;
            StringBuilder result = new StringBuilder();
            while (copy_num != 0) {
                int x = copy_num / 10;
                int digit = copy_num - x * 10;
                switch (digit) {
                    case 3: result.append(chars[count][0]);
                    case 2: result.append(chars[count][0]);
                    case 1: result.append(chars[count][0]);
                    case 0: break;
                    case 4: result.append(chars[count][1]); result.append(chars[count][0]); break;
                    case 8: result.append(chars[count][0]);
                    case 7: result.append(chars[count][0]);
                    case 6: result.append(chars[count][0]); 
                    case 5: result.append(chars[count][1]); break;
                    case 9: result.append(chars[count + 1][0]); result.append(chars[count][0]); break;
                }
                count++;
                copy_num = x;
            }
            
            result = result.reverse();
            return result.toString();
        }
    }
  • 相关阅读:
    wenbao与分治
    wenbao与贪心
    wenbao与高精度
    wenbao与FFT
    wenbao与卡特兰数
    wenbao与类
    wenbao与取整函数
    wenbao与字符串转化
    wenbao与scanf
    wenbao与数字与字符串
  • 原文地址:https://www.cnblogs.com/Gryffin/p/6224591.html
Copyright © 2011-2022 走看看