leetcode第12题--Integer to Roman
Problem:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
把阿拉伯数字转换为罗马数字输出。百度一下对应的 I V X L C D M,代表1,5,10,50,100,500,1000 然后写一个子函数,输入数字和相应的位数级别,如个位为level 1,千为4.因为最多不会超过四千。所以可以如下。注意了,string用法很好,直接加就可以。
class Solution { private: string corRoman(int val, int level) { string base, media, large; string s = ""; if (level == 1) // 个位 { base = "I"; media = "V"; large = "X"; } else if (level == 2) { base = "X"; media = "L"; large = "C"; } else if (level == 3) { base = "C"; media = "D"; large = "M"; } else { base = "M"; } if (val == 0) return ""; if( val < 4) { for ( int i = 0; i < val; i++) s += base; return s; } if (val == 4) { return base + media; } if (val < 9) { s = media; for (int i = 5; i < val; i++) s+=base; return s; } return base + large; } public: string intToRoman(int num) { string s; int a; for (int i = 4; i > 0; i-- ) { a = num/pow(10,i - 1); num %= (int)pow(10, i - 1); s+=corRoman(a,i); } return s; } };
这样就Accept了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步