返回轨道
算法 · 2026-05-14 · 19 阅读

P167 罗马数字转阿拉伯数字

算法 19 阅读

信号摘要

难度:Easy · 时长:08:14 · leetcode 13 · lintcode 419

P167 罗马数字转阿拉伯数字

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个罗马数字,你要将它转成阿拉伯数字。其中,给出的罗马数字表示范围在 1 到 3999 之间。

比如说,给你的罗马数字是 III,你要将它转成数字 3;再比如说,给你的罗马数字是 IV,你要将它转成数字 4。

代码

public class AlgoCasts {

  private static final int[] mapping = new int[256];
  static {
    mapping['I'] = 1;
    mapping['V'] = 5;
    mapping['X'] = 10;
    mapping['L'] = 50;
    mapping['C'] = 100;
    mapping['D'] = 500;
    mapping['M'] = 1000;
  }

  // Time: O(n), Space: O(1)
  public int romanToInt(String s) {
    int n = s.length();
    int result = mapping[s.charAt(n-1)];
    for (int i = n-2; i >= 0; --i) {
      int cur = mapping[s.charAt(i)];
      int right = mapping[s.charAt(i+1)];
      if (cur < right) result -= cur;
      else result += cur;
    }
    return result;
  }

}

📡 通讯频道