leetcode日记(2)整数转罗马数字

leetcode日记(2)整数转罗马数字_第1张图片

题目挺简单,就是硬套就行。

前后用了两种字符拼接方式,一种是str.append("ab"),一种是str.push_back('a')

class Solution {
public:
    string intToRoman(int num) {
        string s;
        while(num/1000!=0){
            s.append("M");
            num-=1000;
        }
        if(num/100==4){
            s.append("CD");
            num-=400;
        }
        if(num/100==9){
            s.append("CM");
            num-=900;
        }
        if(num/500!=0){
            s.append("D");
            num-=500;
        }
            while(num/100!=0){
                s.append("C");
                num-=100;
            }
        if(num/10==4){
            s.append("XL");
            num-=40;
        }
        if(num/10==9){
            s.append("XC");
            num-=90;
        }
        if(num/50!=0){
            s.append("L");
            num-=50;
        }
            while(num/10!=0){
                s.append("X");
                num-=10;
            }
        if(num==4) {s.append("IV");return s;}
        if(num==9) {s.append("IX");return s;}
        if(num>0&&num<9){
            if(num/5!=0){
            s.append("V");
            num-=5;}
            while(num>0) {s.append("I");num--;}
        }
        return s;
    }
};
class Solution {
public:
    string intToRoman(int num) {
        string str;
        while(num/1000!=0){
            num-=1000;
            str.push_back('M');
        }
        if(num/100==4){
            num-=400;
            str.push_back('C');str.push_back('D');
        }
        if(num/100==9){
            num-=900;
            str.push_back('C');str.push_back('M');
        }
        if(num/500!=0){
            num-=500;
            str.push_back('D');
        }
        while(num/100!=0){
            num-=100;
            str.push_back('C');
        }
        if(num/10==4){
            num-=40;
            str.push_back('X');str.push_back('L');
        }
        if(num/10==9){
            num-=90;
            str.push_back('X');str.push_back('C');
        }
        if(num/50!=0){
            num-=50;
            str.push_back('L');
        }
        while(num/10!=0){
            num-=10;
            str.push_back('X');
        }
        if(num==4){
            num-=4;
            str.push_back('I');str.push_back('V');
        }
        if(num==9){
            num-=9;
            str.push_back('I');str.push_back('X');
        }
        if(num/5!=0){
            num-=5;
            str.push_back('V');
        }
        while(num!=0){
            num-=1;
            str.push_back('I');
        }
        return str;
    }
};

发现后者运行时间要稍短一些(?)

你可能感兴趣的:(leetcode,算法,职场和发展)