# 第十一周ARTS总结

# Algorithm

11ms | 7.52% Run time
37.4MB | 54.52% Memory

public int romanToInt(String s) {
    Map<String, Integer> map = new HashMap<>();
    map.put("I", 1);
    map.put("V", 5);
    map.put("X", 10);
    map.put("L", 50);
    map.put("C", 100);
    map.put("D", 500);
    map.put("M", 1000);
    map.put("IV", 4);
    map.put("IX", 9);
    map.put("XL", 40);
    map.put("XC", 90);
    map.put("CD", 400);
    map.put("CM", 900);

    int sum = 0;

    char[] chars = s.toCharArray();

    // 单个字符遍历求和
    for (int i = 0; i < chars.length; ) {
        String chs;
        if (i + 1 < chars.length) {
            chs = chars[i] + "" + chars[i + 1];
        } else {
            chs = chars[i] + "";
        }

        if (map.get(chs) == null) {
            chs = chs.substring(0, 1);
        }

        sum = sum + map.get(chs);

        i = i + chs.length();
    }

    return sum;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# Review

# Tip

  • Base64编码过程:将字符转成二进制,并每6位重新进行编码,不足补=
  • Base64解码过程:将字符去掉=,然后转成二进制,并每8位重新编码

# Share

暂无内容

更新时间: 10/20/2022, 7:04:01 AM