首页 > 代码库 > Integer to Roman/Roman to Integer
Integer to Roman/Roman to Integer
方法:注意罗马数字的分布即可
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; i<13; ++i) { while(num >= value[i]) { str += symbol[i]; num -= value[i]; } } return str; } };
Roman to Integer规则:
- 相同的数字连写,所表示的数等于这些数字相加得到的数,例如:III = 3
- 小的数字在大的数字右边,所表示的数等于这些数字相加得到的数,例如:VIII = 8
- 小的数字,限于(I、X和C)在大的数字左边,所表示的数等于大数减去小数所得的数,例如:IV = 4
class Solution { public: int romanToInt(string s) { char symbol[]={‘M‘,‘D‘,‘C‘,‘L‘,‘X‘,‘V‘,‘I‘}; int value[]= {1000, 500, 100, 50, 10, 5, 1}; unordered_map<char, int>hashTable; for(int i=0; i<7; ++i) hashTable[symbol[i]] = value[i]; int result = 0; for(int i=0; i<s.size(); ++i) { if(i>0 && hashTable[s[i]] > hashTable[s[i-1]]) { result += hashTable[s[i]] - 2*hashTable[s[i-1]]; } else result += hashTable[s[i]]; } return result; } };
Integer to Roman/Roman to Integer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。