題目鏈接如下:Leetcode 013
大致描述一下題目:
講一個羅馬數字轉化成整數,題目限制數字在1-3999之間
羅馬數字有如下7個字符'I','V','X','L','C','D','M',分別代表1,5,10,50,100,500,1000
解題思路:
查閱了一些資料,瞭解到羅馬數字轉化成整數的一些規則
1. 相同數字連寫n次,表示這個數字自加n次
2. 小的數字在右邊,則兩個數相加
3. 小的數字在左邊(僅限I,X,C),則兩個數相減
所以就判斷相鄰兩個字符的大小關係,然後確定是相加還是相減
附上代碼如下(C++):
/*******************************************************************************
Copyright © 2018-20xx Qiao Chuncheng, All Rights Reserved.
File name: 013[羅馬數字轉整數].cpp
Author: Qiao Chuncheng
Version: v1.0
Date: 2018-04-11
*******************************************************************************/
class Solution {
public:
int RomaCharToInt(char a)
{
char romaCh[8] = { 'I','V','X','L','C','D','M' };
int romaNum[8] = { 1,5,10,50,100,500,1000 };
for (int i = 0; i < 7; i++)
{
if (romaCh[i] == a)
return romaNum[i];
}
return -1;
}
int romanToInt(string s) {
int sum = RomaCharToInt(s[0]);
for (size_t i = 1; i < s.size(); i++)
{
int pre, cur;
pre = RomaCharToInt(s[i - 1]);
cur = RomaCharToInt(s[i]);
if (cur > pre)
sum += cur - 2 * pre;
else
sum += cur;
}
return sum;
}
};