Leetcode 13 -- 羅馬數字轉整數

題目鏈接如下: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;
    }
};


發佈了46 篇原創文章 · 獲贊 23 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章