1. 程式人生 > >C++之羅馬數字轉換為整型數字(12)---《那些奇怪的演算法》

C++之羅馬數字轉換為整型數字(12)---《那些奇怪的演算法》

參考《one-day-one-leetcode》

在上篇部落格中我們討論了將1~3999以內的數字轉化為羅馬數字,著重討論了非7個標準的羅馬數字的一些表達,例如4,6,3等等的表達,這篇部落格我們著討論一下將羅馬數字轉化為整型數字的情況!
其實我們在進行轉化的時候主要注意一下4,40,400,等數字的表達即可!

程式碼:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int toNum(char ch);
int romanToInt(string
s){ int ret = 0; int i = 0; while ( i < s.length()){ if (i + 1 < s.length() && toNum(s[i]) < toNum(s[i + 1])){ ret += toNum(s[i + 1]) - toNum(s[i]); i++; } else{ ret += toNum(s[i]); } i++; } return
ret; } int toNum(char ch){ int num = 0; switch (ch){ case 'I':num = 1; break; case 'V':num = 5; break; case 'X':num = 10; break; case 'L':num = 50; break; case 'C':num = 100; break; case 'D':num = 500; break; case 'M':num = 1000; break; } return num; } int main(){ string
s = "MMMDCCLXXII"; int con = romanToInt(s); cout << con << endl; return 0; }

執行結果:
這裡寫圖片描述