代码改变世界

leetcode - Roman to Integer

2013-10-20 19:01  张汉生  阅读(186)  评论(0编辑  收藏  举报

 1 class Solution {
 2 public:
 3     int romanToInt(string s) {
 4         // Note: The Solution object is instantiated only once and is reused by each test case.
 5         string romans[30] = {"I","II","III","IV","V","VI","VII","VIII","IX","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","M","MM","MMM"};
 6         int nums[30] = {1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800,900,1000,2000,3000};
 7         int i=0;
 8         int len = s.length();
 9         int rlt = 0;
10         while (i<len){
11             for (int j=29; j>=0; j--){
12                 string tmp = romans[j];
13                 if (s.substr(i,tmp.length()) == tmp){
14                     i += tmp.length();
15                     rlt += nums[j];
16                     break;
17                 }
18             }
19         }
20         return rlt;
21     }
22 };