亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

羅馬數字轉整數-算法學習

2023-07-13 06:06:01
3
0

題目詳情:
羅馬數字包含以下七種字符: I, V, X, L,C,D 和 M。
字符          數值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如, 羅馬(ma)數字(zi) 2 寫(xie)做 II ,即(ji)為(wei)兩個并列的 1 。12 寫(xie)做 XII ,即(ji)為(wei) X + II 。 27 寫(xie)做  XXVII, 即(ji)為(wei) XX + V + II 。

通常(chang)情(qing)況(kuang)下,羅馬數(shu)字(zi)(zi)中小(xiao)(xiao)的數(shu)字(zi)(zi)在大的數(shu)字(zi)(zi)的右(you)邊。但也(ye)存(cun)在特(te)例,例如 4 不寫做 IIII,而是 IV。數(shu)字(zi)(zi) 1 在數(shu)字(zi)(zi) 5 的左邊,所表示(shi)的數(shu)等于大數(shu) 5 減小(xiao)(xiao)數(shu) 1 得(de)到(dao)的數(shu)值 4 。同樣地,數(shu)字(zi)(zi) 9 表示(shi)為(wei) IX。這個(ge)特(te)殊的規則只適(shi)用(yong)于以下六(liu)種情(qing)況(kuang):

I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
給(gei)定一(yi)個(ge)羅馬數(shu)字(zi),將其轉換成整數(shu)。

示例:
輸入: s = "III"
輸出: 3

解題思路:

定義一個變量 result 來保存轉換后的整數,初始化為 0。另外再定義一個變量 prevValue 來保存(cun)當前字(zi)符(fu)的前一(yi)個字(zi)符(fu)表示的值。

從字(zi)符(fu)(fu)(fu)串的(de)最后(hou)一個字(zi)符(fu)(fu)(fu)開始(shi)向(xiang)前(qian)(qian)遍歷,獲取當(dang)前(qian)(qian)字(zi)符(fu)(fu)(fu)表(biao)示(shi)(shi)的(de)值,并與前(qian)(qian)一個字(zi)符(fu)(fu)(fu)對應的(de)值進行比(bi)較。如果當(dang)前(qian)(qian)字(zi)符(fu)(fu)(fu)表(biao)示(shi)(shi)的(de)值小于前(qian)(qian)一個字(zi)符(fu)(fu)(fu)表(biao)示(shi)(shi)的(de)值,則需要減去當(dang)前(qian)(qian)值;否則,累(lei)加(jia)當(dang)前(qian)(qian)值。

在每次循環中,需要更新 prevValue 的值為當(dang)前字符表(biao)示的值,以供下一次循環使用。


代碼實現:

function romanToInt(s) {
    const romanMap = new Map([
        ['I', 1],
        ['V', 5],
        ['X', 10],
        ['L', 50],
        ['C', 100],
        ['D', 500],
        ['M', 1000]
    ]);

    let result = 0;
    let prevValue = 0;

    for (let i = s.length - 1; i >= 0; i--) {
        const currentChar = s[i];
        const currentValue = romanMap.get(currentChar);

        // 如果當前字符表示的值小于前一個字符表示的值,則需要減去當前值
        if (currentValue < prevValue) {
            result -= currentValue;
        }
        // 否則,累加當前值
        else {
            result += currentValue;
        }

        prevValue = currentValue;
    }

    return result;
}

// 示例輸入
const s = "IV";

// 調用函數將羅馬數字轉換為整數
const result = romanToInt(s);

// 輸出結果
console.log(result);
0條評論
作者已關閉評論
t****m
98文章(zhang)數
1粉絲數
t****m
98 文章 | 1 粉絲
t****m
98文章數
1粉絲數
t****m
98 文章 | 1 粉絲
原創

羅馬數字轉整數-算法學習

2023-07-13 06:06:01
3
0

題目詳情:
羅馬數字包含以下七種字符: I, V, X, L,C,D 和 M。
字符          數值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例(li)如(ru), 羅馬數字 2 寫(xie)做(zuo) II ,即(ji)為(wei)兩(liang)個并列的 1 。12 寫(xie)做(zuo) XII ,即(ji)為(wei) X + II 。 27 寫(xie)做(zuo)  XXVII, 即(ji)為(wei) XX + V + II 。

通常情況下,羅馬數字(zi)中(zhong)小的數字(zi)在大的數字(zi)的右(you)邊(bian)。但也存在特例,例如 4 不寫做 IIII,而是 IV。數字(zi) 1 在數字(zi) 5 的左邊(bian),所表(biao)示(shi)的數等于大數 5 減(jian)小數 1 得到的數值(zhi) 4 。同樣地,數字(zi) 9 表(biao)示(shi)為 IX。這(zhe)個特殊的規則只適用(yong)于以下六種情況:

I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
給定一個羅馬數(shu)(shu)字,將其轉換成整數(shu)(shu)。

示例:
輸入: s = "III"
輸出: 3

解題思路:

定義一個變量 result 來保存轉換后的整數,初始化為 0。另外再定義一個變量 prevValue 來保存當前字符(fu)的(de)前一個字符(fu)表示的(de)值。

從字(zi)符(fu)(fu)(fu)串的(de)最(zui)后一(yi)個字(zi)符(fu)(fu)(fu)開始(shi)向前(qian)遍(bian)歷,獲取當前(qian)字(zi)符(fu)(fu)(fu)表(biao)(biao)示(shi)的(de)值(zhi)(zhi),并與(yu)前(qian)一(yi)個字(zi)符(fu)(fu)(fu)對應(ying)的(de)值(zhi)(zhi)進行比較。如果當前(qian)字(zi)符(fu)(fu)(fu)表(biao)(biao)示(shi)的(de)值(zhi)(zhi)小于前(qian)一(yi)個字(zi)符(fu)(fu)(fu)表(biao)(biao)示(shi)的(de)值(zhi)(zhi),則(ze)(ze)需要減去當前(qian)值(zhi)(zhi);否則(ze)(ze),累加(jia)當前(qian)值(zhi)(zhi)。

在每次循環中,需要更新 prevValue 的(de)值(zhi)為當前字符(fu)表(biao)示的(de)值(zhi),以供下一次循環使(shi)用。


代碼實現:

function romanToInt(s) {
    const romanMap = new Map([
        ['I', 1],
        ['V', 5],
        ['X', 10],
        ['L', 50],
        ['C', 100],
        ['D', 500],
        ['M', 1000]
    ]);

    let result = 0;
    let prevValue = 0;

    for (let i = s.length - 1; i >= 0; i--) {
        const currentChar = s[i];
        const currentValue = romanMap.get(currentChar);

        // 如果當前字符表示的值小于前一個字符表示的值,則需要減去當前值
        if (currentValue < prevValue) {
            result -= currentValue;
        }
        // 否則,累加當前值
        else {
            result += currentValue;
        }

        prevValue = currentValue;
    }

    return result;
}

// 示例輸入
const s = "IV";

// 調用函數將羅馬數字轉換為整數
const result = romanToInt(s);

// 輸出結果
console.log(result);
文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0