Leetcode习题记录——Integer to Roman 和 Roman to Integer
2017-07-12 15:41
429 查看
题目:Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
翻译一下就是将一个整数写成罗马数字的样子
第一种方法:列举所有的字母和对应的数字,用num去做减法,最后将字母拼接起来就完成了
第二种方法:
leetcode 上看到的方法,快拿小本本记下来,实现得更为简单
题目:Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
第一种方法:我通过map来查找罗马字母对应的数字,注意数字与罗马字母并不是一一对应的,而要进行一次判断。
第二种方法来自leetcode:
使用这个indexof更加简洁,但思路都是一样的。
Input is guaranteed to be within the range from 1 to 3999.
翻译一下就是将一个整数写成罗马数字的样子
第一种方法:列举所有的字母和对应的数字,用num去做减法,最后将字母拼接起来就完成了
class Solution { public: string intToRoman(int num) { string str; string symbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; int value[]= {1000,900,500,400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; for (int i =0 ;num != 0; i++){ while(num >= value[i]){ num -= value[i]; str += symbol[i]; } } return str; } };
第二种方法:
leetcode 上看到的方法,快拿小本本记下来,实现得更为简单
public static String intToRoman(int num) { String M[] = {"", "M", "MM", "MMM"}; String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}; String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; return M[num/1000] + C[(num%1000)/100] + X[(num%100)/10] + I[num%10]; }
题目:Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
第一种方法:我通过map来查找罗马字母对应的数字,注意数字与罗马字母并不是一一对应的,而要进行一次判断。
class Solution { public: int romanToInt(string s) { int integer[] = { 1, 5, 10, 50, 100, 500, 1000}; char roman[] ={ 'I','V', 'X','L', 'C', 'D', 'M'}; map<char,int> tonum; int sum = 0; for(int i = 0; i< 7; i++) tonum.insert(make_pair(roman[i],integer[i])); for(int i = 0; i < s.length(); i++ ){ if(tonum[s[i-1]] < tonum[s[i]]){ sum += tonum[s[i]] - 2 * tonum[s[i - 1]]; } else sum += tonum[s[i]]; } return sum; } };
第二种方法来自leetcode:
使用这个indexof更加简洁,但思路都是一样的。
public int romanToInt(String s) { int sum=0; if(s.indexOf("IV")!=-1){sum-=2;} if(s.indexOf("IX")!=-1){sum-=2;} if(s.indexOf("XL")!=-1){sum-=20;} if(s.indexOf("XC")!=-1){sum-=20;} if(s.indexOf("CD")!=-1){sum-=200;} if(s.indexOf("CM")!=-1){sum-=200;} char c[]=s.toCharArray(); int count=0; for(;count<=s.length()-1;count++){ if(c[count]=='M') sum+=1000; if(c[count]=='D') sum+=500; if(c[count]=='C') sum+=100; if(c[count]=='L') sum+=50; if(c[count]=='X') sum+=10; if(c[count]=='V') sum+=5; if(c[count]=='I') sum+=1; } return sum; }
相关文章推荐
- 个人记录-LeetCode 12. Integer to Roman
- LeetCode Online Judge 题目C# 练习 - Integer to Roman
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- [leetCode] Integer to Roman
- leetcode integer to roman number conversion
- LeetCode12: Integer to Roman
- [Leetcode 17] 13 Roman to Integer
- [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 : Roman to Integer
- [LeetCode]Roman to Integer
- Leetcode: Roman to Integer
- [LeetCode] Integer to Roman 解题报告