12. Integer to Roman

Problem

leetcode链接problem

Code

题目其实并不是很难,就是按照思路一直从大到小一直写下去就可以了。

class Solution {
public:
    string intToRoman(int num) {
        string result;
        int change = num;
        if(num >= 1000)//处理千位部分
        {
            int thousand = change / 1000;
            for (int i = 0; i < thousand; ++i) {
                result.append(1,'M');
            }
            change = change % 1000;
        }

        if(change >= 900){//处理百位部分
            result.append(1,'C');
            result.append(1,'M');
            change = change % 100;
        }
        if(change >= 500){
            result.append(1,'D');
            int hundred = (change - 500) / 100;
            for (int i = 0; i < hundred; ++i) {
                result.append(1,'C');
            }
            change = change % 100;
        }
        if(change >= 400){
            result.append(1,'C');
            result.append(1,'D');
            change = change % 100;
        }
        if(change >= 100){
            int hundred  = change / 100;
            for (int i = 0; i < hundred; ++i) {
                result.append(1,'C');
            }
            change = change % 100;
        }

        //处理十位部分
        if(change >= 90){
            result.append(1,'X');
            result.append(1,'C');
            change = change % 10;
        }
        if(change >= 50){
            result.append(1,'L');
            int decade = (change - 50) / 10;
            for (int i = 0; i < decade; ++i) {
                result.append(1,'X');
            }
            change = change % 10;
        }
        if(change >= 40) {
            result.append(1, 'X');
            result.append(1, 'L');
            change = change % 10;
        }
        if(change >= 10){
            int decade  = change / 10;
            for (int i = 0; i < decade; ++i) {
                result.append(1,'X');
            }
            change = change % 10;
        }

        //处理完十位,再处理各位部分,嘿嘿嘿
        if(change == 9){
            result.append(1,'I');
            result.append(1,'X');
            return result;
        }
        if(change >= 5){
            result.append(1,'V');
            int unit = change - 5;
            for (int i = 0; i < unit; ++i) {
                result.append(1,'I');
            }
            return result;
        }
        if(change == 4) {
            result.append(1, 'I');
            result.append(1, 'V');
            return result;
        } else{
            for (int i = 0; i < change; ++i) {
                result.append(1,'I');
            }
            return result;
        }
        return result;
    }
};

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容