LeetCode-Integer to Roman
来源:互联网 发布:spss mac 23 序列号 编辑:程序博客网 时间:2024/06/06 13:25
题目
给定一个整数,把它转换为一个罗马数字。
给定数字的范围为:1-3999
示例
输入:1976 输出:”MCMLXXVI”
分析
罗马数字的构成如下:
I V X L C D M1 5 10 50 100 500 1000
上述是最基本的罗马数字,如1600可表示为MDC
。
但是,如果用IIII
表示4显然有点麻烦,所以又提出了下列的表示:
IV IX XL XC CD CM4 9 40 90 400 900
所以可以将数据分段处理:
- >= 1000,”M”,自减1000
- >= 900,”CM”自减900
- >= 500,”D”自减500
- >= 400,”CD”自减400
- >= 100,”C”自减100
- >= 90,”XC”自减90
- >= 50,”L”自减50
- >= 10,”X”自减10
- >= 9,”IX”自减9
- >=5 ,”V”自减5
- >= 4,”IV”自减4
- >= 1,”I”自减1
流程
- 如果大于0
- 转换
- >= 1000,”M”,自减1000
- >= 900,”CM”自减900
- >= 500,”D”自减500
- >= 400,”CD”自减400
- >= 100,”C”自减100
- >= 90,”XC”自减90
- >= 50,”L”自减50
- >= 10,”X”自减10
- >= 9,”IX”自减9
- >=5 ,”V”自减5
- >= 4,”IV”自减4
- >= 1,”I”自减1
代码
string intToRoman(int num) { char ch[20] = {}; int iCout = 0; while (num > 0) { if (num >= 1000) { ch[iCout++] = 'M'; num -= 1000; } else if (num >= 900) { ch[iCout++] = 'C'; ch[iCout++] = 'M'; num -= 900; } else if (num >= 500) { ch[iCout++] = 'D'; num -= 500; } else if (num >= 400) { ch[iCout++] = 'C'; ch[iCout++] = 'D'; num -= 400; } else if (num >= 100) { ch[iCout++] = 'C'; num -= 100; } else if (num >= 90) { ch[iCout++] = 'X'; ch[iCout++] = 'C'; num -= 90; } else if (num >= 50) { ch[iCout++] = 'L'; num -= 50; } else if (num >= 40) { ch[iCout++] = 'X'; ch[iCout++] = 'L'; num -= 40; } else if (num >= 10) { ch[iCout++] = 'X'; num -= 10; } else if (num >= 9) { ch[iCout++] = 'I'; ch[iCout++] = 'X'; num -= 9; } else if (num >= 5) { ch[iCout++] = 'V'; num -= 5; } else if (num >= 4) { ch[iCout++] = 'I'; ch[iCout++] = 'V'; num -= 4; } else { ch[iCout++] = 'I'; num -= 1; } } return ch; }
完整代码
GitHub
0 0
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- LeetCode Integer to Roman & Roman to Integer
- leetcode - roman to integer & integer to roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- LeetCode: Integer to Roman
- LeetCode : Roman to Integer
- [Leetcode] Roman to Integer
- [Leetcode] Integer to Roman
- Leetcode: Integer to Roman
- Leetcode: Roman to Integer
- LeetCode Integer to Roman
- 【leetcode】Roman to Integer
- 单链表就地逆置的两种方法(递归与普通循环)
- Apache Mina
- without active transaction
- 【ssh2学习记录】1、struts2框架入门
- C 语言程序设计实践 传说中的 X
- LeetCode-Integer to Roman
- 分治法找假币
- java cache 学习记录之二
- hihoCoder 1121 二部图判定
- 百度面试题——用C语言实现函数void * memmove(void *dest,const void *src,size_t n)
- 程序设计实践阅读摘要[一]
- FZU 2188 BFS
- java基础、矩阵乘法
- 行为型模式总结