首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode Roman to Integer - 羅馬數字轉整數解析

     編輯:關於C++

問題描述

給定羅馬數字字符串(範圍 1-3999),轉為整數。羅馬數字規則:I=1,V=5,X=10,L=50,C=100,D=500,M=1000。左減右加:較小在較大左邊表示減法(如 IV=4, IX=9)。

解法:掃描比較相鄰字符

從左向右掃描,若當前字符值 < 下一字符值,則減去當前值;否則加上當前值。最後加上末尾字符值。

代碼實現(Java)

public class Solution {
    private static final Map map = Map.of(
        'I',1,'V',5,'X',10,'L',50,'C',100,'D',500,'M',1000
    );
    public int romanToInt(String s) {
        int res = 0;
        for (int i = 0; i < s.length(); i++) {
            int cur = map.get(s.charAt(i));
            if (i+1 < s.length() && cur < map.get(s.charAt(i+1))) res -= cur;
            else res += cur;
        }
        return res;
    }
}

關鍵點

  • 只需比較相鄰兩字符,無需回溯。
  • 時間 O(n),空間 O(1)。
  • 輸入保證合法,無需異常處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved