Roman to Integer

来源:互联网 发布:淘宝无法付款怎么回事 编辑:程序博客网 时间:2024/06/14 06:11

Roman to Integer

 

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

Hide Tags
 Math String
Hide Similar Problems
 (M) Integer to Roman
百度百科:
  1. 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
  2. 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
  3. 小的数字、(限于 Ⅰ、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
  4. 正常使用时、连写的数字重复不得超过三次。(表盘上的四点钟“IIII”例外);
class Solution {public:   int romanToInt(string s) {        //I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、 M(1000)        //MDCCCLXXXVIII-1888,MMMCMXCIX-3999int len=s.length();int result=0,last;//if(len == 0)//return 0;int sub=getRomanValue(s.at(0));last=sub;for(int i=1;i<len;i++){int cur=getRomanValue(s.at(i));if(last == cur)sub += cur;else if(sub > cur){result += sub;sub=cur;}else{sub = cur-sub;}last=cur;}result += sub;return result;    }    int getRomanValue(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;  }    }};
from:http://blog.csdn.net/beiyetengqing/article/details/8458778


0 0
原创粉丝点击