码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode] 12. Integer to Roman

时间:2016-12-27 09:46:40      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:重复   ati   ring   break   string   ret   code   tor   new   

关于罗马数字:

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();
    }
}

 

[leetcode] 12. Integer to Roman

标签:重复   ati   ring   break   string   ret   code   tor   new   

原文地址:http://www.cnblogs.com/Gryffin/p/6224591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!