leetcode-12-Integer to Roman
来源:互联网 发布:C语言编程输出声音 编辑:程序博客网 时间:2024/06/06 05:08
1.说明:
该题目要求是将一个整数转换为一个罗马数字,所以首先要搞清楚罗马数字的规则。
2.罗马数字的规则:
罗马数字和阿拉伯数字一样,都是十进制的,所以我们只要把每一位的数字拼凑到一起就可以了。但是有一点需要注意的是,罗马数字不同于阿拉伯数字,它的每一位数字表示方法不同,比如,对于阿拉伯数字,五用 ‘5’来表示,而五十只需要把 '5'放在十位就行了:‘50’,因为有0占位,因此不会有任何歧义。但是罗马数字没有占位机制,因此各个位的表示方法不同,如五用罗马数字表示为 ‘V’,五十则为 ‘X’。
虽然罗马数字每一个位对应的数字符号不同,但是表示的方法都是一样的,都是通过表示‘1’的符号和表示‘5’的符号组合而成。表示方法如下:假设某一位表示‘1’的符号为A,表示‘5’的符号为B,则 0,1,2,3,4,5,6,7,8,9分别为 ‘’(空字符),A, AA, AAA, AB(可以这么理解,A位于B左侧相当于B-A,A位于B右侧相当于B+A), B, BA, BAA, BAAA, AC(C是更高一位的‘1’,相当于10 - 1)。
根据上面的叙述,我们只需要知道每一位表示 ‘1’和 ‘5’的符号,就可以按照上述规则拼凑起罗马数字了。
值得注意的是,题目中说明输入整数从1 ~ 3999 ,因此只需要知道个位到千位的表示符号即可。
3.代码:
/** * @param {number} num * @return {string} */var intToRoman = function(num) { var result = ''; var temp; var list = [ { one: 'I', five: 'V' }, { one: 'X', five: 'L' }, { one: 'C', five: 'D' }, { one: 'M' } ]; var map = function (integer, cur, next) { var one = cur.one; var five = cur.five; var ten = next && next.one; switch (integer) { case 0: return ''; case 1: return one; case 2: return one + one; case 3: return one + one + one; case 4: return one + five; case 5: return five; case 6: return five + one; case 7: return five + one + one; case 8: return five + one + one + one; case 9: return one + ten; } }; while (num) { temp = num % 10; result = map(temp, list[0], list[1]) + result; list.shift(); num = Math.floor(num / 10); } return result;};
阅读全文
1 0
- [LeetCode 12] Integer to Roman
- leetcode 12 Integer to Roman
- [leetcode 12] Integer to Roman
- [Leetcode] 12 - Integer to Roman
- LeetCode | #12 Integer to Roman
- leetcode.12----------Integer to Roman
- leetcode 12 Integer to Roman
- LeetCode 12 - Integer to Roman
- leetcode 12 -- Integer to Roman
- Leetcode #12-Integer to Roman
- LeetCode 12:"Integer to Roman"
- Leetcode#12 Integer to Roman
- leetcode-12Integer to Roman
- leetcode 12: Integer to Roman
- Leetcode 12 Integer to Roman
- Leetcode#12||Integer to Roman
- leetcode 12 Integer to Roman
- LeetCode 12: Integer to Roman
- C#可空类型
- 配置文件的开源库 —— tr…
- libuv之基础(转载)
- <转>IOCP相关的一些总结
- 在Sql server 中删除大…
- leetcode-12-Integer to Roman
- 从Windows(x86)到Linux(x64)的代码…
- 生存分析(2)
- LINUX平台epoll与WIN平台iocp的异…
- cocos2d-x动画(转)
- 网站的那些特征对搜索引擎是友好型
- MySQL无法直接执行select into语句
- 大XML文件解析入库的一个方法
- 透過Xcode直接把應用程式打包成ipa…