12. Integer to Roman 和 13. Roman to Integer

来源:互联网 发布:郝斌c语言不压缩百度云 编辑:程序博客网 时间:2024/05/01 18:33

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

把一个数字变成罗马数字,直接递归暴力,代码有点丑23333

class Solution {public:    string intToRoman(int num) {        if(num >= 1000)            return "M" + intToRoman(num - 1000);        if(num <= 999 && num >= 900)            return "CM" + intToRoman(num - 900);        if(num <= 899 && num >= 800)            return "DCCC" + intToRoman(num - 800);        if(num <= 799 && num >= 700)            return "DCC" + intToRoman(num - 700);        if(num <= 699 && num >= 600)            return "DC" + intToRoman(num - 600);        if(num <= 599 && num >= 500)            return "D" + intToRoman(num - 500);        if(num <= 499 && num >= 400)            return "CD" + intToRoman(num - 400);        if(num <= 399 && num >= 300)            return "CCC" + intToRoman(num - 300);        if(num <= 299 && num >= 200)            return "CC" + intToRoman(num - 200);        if(num <= 199 && num >= 100)            return "C" + intToRoman(num - 100);        if(num <= 99 && num >= 90)            return "XC" + intToRoman(num - 90);        if(num <= 89 && num >= 80)            return "LXXX" + intToRoman(num - 80);        if(num <= 79 && num >= 70)            return "LXX" + intToRoman(num - 70);        if(num <= 69 && num >= 60)            return "LX" + intToRoman(num - 60);        if(num <= 59 && num >= 50)            return "L" + intToRoman(num - 50);        if(num <= 49 && num >= 40)            return "XL" + intToRoman(num - 40);        if(num <= 39 && num >= 30)            return "XXX" + intToRoman(num - 30);        if(num <= 29 && num >= 20)            return "XX" + intToRoman(num - 20);        if(num <= 19 && num >= 10)            return "X" + intToRoman(num - 10);        if(num == 9) return "IX";        if(num == 8) return "VIII";        if(num == 7) return "VII";        if(num == 6) return "VI";        if(num == 5) return "V";        if(num == 4) return "IV";        if(num == 3) return "III";        if(num == 2) return "II";        if(num == 1) return "I";        return "";    }};

13是把罗马数值变成普通的数字233333,我直接贴别人的代码了233333

class Solution {public:    int getVal(char a){    switch (a) {    case 'I':        return 1;    case 'V':        return 5;    case 'X':        return 10;    case 'L':        return 50;    case 'C':        return 100;    case 'D':        return 500;    case 'M':        return 1000;    }    return 0;}int romanToInt(string s){    int res = 0;    char max = 'I';    for (int i = s.size()-1; i >= 0; --i) {        if (getVal(s[i]) >= getVal(max)) {            max = s[i];            res += getVal(s[i]);        } else {            res -= getVal(s[i]);        }    }    return res;}};
0 0
原创粉丝点击