【一天一道LeetCode】#12 Integer to Roman
2016-04-08 15:40
351 查看
一天一道LeetCode系列
(一)题目
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
(二)解题
将整形数字转换成罗马数字罗马数字共有七个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000)
举例:Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ、Ⅶ、Ⅷ、Ⅸ、Ⅹ、Ⅺ、Ⅻ表示1-11
代码:
class Solution { public: string intToRoman(int num) { string str = ""; string roman[8] = {"I","V","X","L","C","D","M"}; int j=0; while(num) { int temp = num%10; string str_t =""; if(temp <4) { int count = temp; while(count--) str_t+=roman[j]; } else if(temp==4) { str_t=roman[j]; str_t+=roman[j+1]; } else if(temp>=5&&temp<=8) { str_t+=roman[j+1]; int count = temp-5; while(count--) str_t+=roman[j]; } else if(temp==9) { str_t+=roman[j]; str_t+=roman[j+2]; } cout<<roman[j]<<endl; cout<<str_t<<endl; str =str_t+str; j=j+2; num = num/10; } return str; } };
我这段代码看起来比较臃肿。看到网上的写法如beiyeqingteng博主的:
public class Solution { public String intToRoman(int number) { int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; String[] numerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" }; StringBuilder result = new StringBuilder(); for (int i = 0; i < values.length; i++) { while (number >= values[i]) { number -= values[i]; result.append(numerals[i]); } } return result.toString(); } }
看起来就简单多了。
相关文章推荐
- 读取配置文件的方式user.properties
- tcp和udp的0字节数据
- 【一天一道LeetCode】#12 Integer to Roman
- hdoj 1428 漫步校园 【BFS&&DFS&&记忆化搜索好题】
- 在VC++6.0中创建静态库
- centos 7安装mysql数据库
- Python3 连接Mysql
- linux 光标快捷键
- VSFlexGrid使用技巧
- cvHoughCircle 解析
- XCode锁定XIB或者StroryBoard,不让编辑某些属性
- AVLTree
- 查询返回目录下的指定类型文件
- dp经典模型
- Cocos2d-x Lua 触摸事件
- 树莓派网上教程汇总
- pom.xml中的占位符
- 在微信内一次报修联想电脑的全过程
- 结对作业
- 业务在测试过程中的重要性