首页 > 代码库 > 13. Roman to Integer
13. Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
分析
从前往后扫描,因为左减数字只能最多一位,并且比当前数字小,所以扫描的时候不断判断当前罗马字符和上一个的大小,如果s[i-1] < s[i],那么就加上 s[i] - s[i - 1],其他情况,加上 s[i]。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | class Solution { public : inline int map( const char c) { switch (c) { case ‘I‘ : return 1; case ‘V‘ : return 5; case ‘X‘ : return 10; case ‘L‘ : return 50; case ‘C‘ : return 100; case ‘D‘ : return 500; case ‘M‘ : return 1000; default : return 0; } } int romanToInt(string s) { int len = s.size(); if (len == 0) return 0; int result = 0; for ( int i = 0; i < len; ++i){ if (i > 0 && map(s[i]) > map(s[i - 1])){ result += map(s[i]) - 2 * map(s[i - 1]); } else { result += map(s[i]); } } return result; } }; |
来自为知笔记(Wiz)
13. Roman to Integer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。