Leetcode 12. Integer to Roman

https://leetcode.com/problems/integer-to-roman/submissions/

using namespace std;
class Solution {
public:
    string reps="IVXLCDM";
    
    string itor(int k,int l){
        switch(k){
            case 0: 
            case 1: 
            case 2: 
            case 3: return string(k,reps[l]);
            case 4: return reps[l]+string(1,reps[l+1]);
            case 5: return string(1,reps[l+1]);
            case 6: 
            case 7:
            case 8: return reps[l+1]+string((k%5),reps[l]);
            case 9: return reps[l]+string(1,reps[l+2]);
        }
        return "";
    }
    string intToRoman(int num) {
        string ans;
        ans+=itor(num/1000,6),num%=1000;
        ans+=itor(num/100,4),num%=100;
        ans+=itor(num/10,2),num%=10;
        ans+=itor(num,0);
        return ans;
    }
};

python版本

class Solution:
    def intToRoman(self, num: int) -> str:
        d4=['','M','MM','MMM']
        d3=['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM']
        d2=['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC']
        d1=['','I','II','III','IV','V','VI','VII','VIII','IX']
        ans=''
        ans+=d4[num//1000]
        num%=1000
        ans+=d3[num//100]
        num%=100
        ans+=d2[num//10]
        num%=10
        ans+=d1[num]
        return ans
posted @ 2019-04-26 13:53  benda  阅读(121)  评论(0编辑  收藏  举报