LeetCode 012 Integer to Roman
来源:互联网 发布:中兴端口查询mac 编辑:程序博客网 时间:2024/05/16 14:06
【题目】
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
【题意】
给定一个整数,将其表示成罗马数字
【思路】
罗马数字中只使用如下七个基值字母:M,D,C,L,X,V,I,分别用来表示1000、500、100、50、10、5、1。罗马数组数规则:
基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个;放在大数的左边只能用一个。
不能把基本数字V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目,只能使用一个。
V 和X 左边的小数字只能用Ⅰ。
L 和C 左边的小数字只能用X。
D 和M 左边的小数字只能用C。
【代码】
class Solution {public: string intToRoman(int num) {string roman="";//考虑>1000的情况int baseCount=num/1000; //计算基数的个数num%=1000; //剩余的值for(int i=0; i<baseCount; i++)//表示千位数 roman+="M";//考虑剩余数>=900的情况,因为900需要特殊处理 if(num>=900){ roman+="CM"; num%=900; } //考虑剩余数>=500的情况 if(num>=500){ roman+="D"; num%=500; } //考虑剩余数>=400的情况,因为400需要特殊处理 if(num>=400){ roman+="CD"; num%=400; } //考虑剩余数>=100的情况 if(num>=100){ baseCount=num/100; num%=100; for(int i=0; i<baseCount; i++) roman+="C"; } //考虑剩余数>=90的情况, 因为90需要特殊处理 if(num>=90){ roman+="XC"; num%=90; } //考虑剩余数>=50的情况 if(num>=50){ roman+="L"; num%=50; } //考虑剩余数>=40的情况,因为40需要特殊处理 if(num>=40){ roman+="XL"; num%=40; } //考虑剩余数>=10的情况 if(num>=10){ baseCount=num/10; num%=10; for(int i=0; i<baseCount; i++) roman+="X"; } //考虑剩余数>=9的情况 if(num>=9){ roman+="IX"; num%=9; } //考虑剩余数>=5的情况 if(num>=5){ roman+="V"; num%=5; } //考虑剩余数>=4的情况,因为4需要特殊处理 if(num>=4){ roman+="IV"; num%=4; } //考虑剩余数>=1的情况 if(num>=1){ for(int i=0; i<num; i++) roman+="I"; } return roman; }};
0 0
- leetcode-012:Integer to Roman
- LeetCode 012 Integer to Roman
- LeetCode 012 Integer to Roman
- [LeetCode]-012-Integer to Roman
- leetcode 012 Integer to Roman
- LeetCode 012 Integer to Roman
- [LeetCode]012-Integer to Roman
- LeetCode 012 Integer to Roman
- LeetCode 012: Integer to Roman
- leetcode-012-Integer to Roman
- LeetCode 012 Integer to Roman
- LeetCode-012 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:Roman to Integer,Integer to Roman
- LeetCode Integer to Roman & Roman to Integer
- leetcode - roman to integer & integer to roman
- 生活已经如此艰难
- Android网络通信Volley框架源码浅析(二)
- ExpandableListView 学习
- javascript的回调函数里如何传递参数
- XTU1173:Five Tiger(模拟)
- LeetCode 012 Integer to Roman
- 堆和栈的区别 (转贴)
- android API文档下载地址
- Fragment 选项卡
- 开发指南专题八:JEECG微云快速开发平台数据字典
- 长沙拓展训练基地
- BNUOJ 34025 -Poor Warehouse Keeper(贪心)
- Fragment 和 Fragment 之间的通讯
- XTU1176:I Love Military Chess