Given an integer, convert it to a roman numeral.

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

题解:

  观察 1 到 10 :Ⅰ,Ⅱ,Ⅲ,Ⅳ(IIII),Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹ,Ⅺ

  难点在于出现字符不能连续超过三次,以及大数左边至多有一个小数。所以要分情况:1 - 3,4,5 - 8,9。将小数在大数左边的情况摘出来。

Solution 1

  贪心策略

 class Solution {
public:
string intToRoman(int num) {
string res = "";
vector<int> weights{, , , , , , , , , , , , };
vector<string> tokens{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; int i = ;
while (num && i < weights.size()) {
while (num >= weights[i]) {
num -= weights[i];
res += tokens[i];
}
++i;
} return res;
}
};

Solution 2

 class Solution {
public:
string intToRoman(int num) {
vector<string> M = { "", "M", "MM", "MMM" };
vector<string> C = { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
vector<string> X = { "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };
vector<string> I = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };
return M[num / ] + C[(num % ) / ] + X[(num % ) / ] + I[num % ];
}
};

最新文章

  1. 网站部署 HTTPS 中需要做的事情
  2. Maven 手动添加 JAR 包到本地仓库
  3. 如何解决pycharm输入中文报错问题
  4. Linux配置网络YUM源
  5. django上传文件
  6. 一句话菜刀获取ip详细信息
  7. linux自带有usb驱动,为什么还需要libusb呢
  8. 【操作系统】:Main features of the X86-64
  9. [js高手之路] html5 canvas系列教程 - 掌握画直线图形的常用API
  10. Oracle_建表
  11. BZOJ 3239: Discrete Logging [BGSG]
  12. centos7+rsyslog+loganalyzer+mysql 搭建rsyslog日志服务器
  13. 【nginx】配置
  14. Mac自动化环境
  15. 《JAVA程序设计》_第五周学习总结
  16. 一键安装Lnmp教程
  17. Mad libs
  18. Python api接口和SQL数据库关联
  19. vue中异步函数async和await的用法
  20. 【PMP】关键路径法与关键链法

热门文章

  1. Black And White(DFS+剪枝)
  2. iOS启动页加载广告
  3. Data Decisions: DSP vs. DMP
  4. js函数的caller属性
  5. linux c编程:popen
  6. 基本操作——word中怎样同一页中放入多张图片
  7. SAP basis 二
  8. django 异步任务实现及Celery beat实现定时/轮询任务
  9. QT5使用Webkti
  10. 小程序网络请求arraybuffer 转为base64