LeetCode刷题记6-13. 罗马数字转整数

LeetCode刷题记6

标题. 罗马数字转整数

题目
LeetCode刷题记6-13. 罗马数字转整数_第1张图片
简单的模拟题,本来想用if-else写数字和字符的转化,后来想到复习一下map,代码如下:

class Solution {
    public int romanToInt(String s) {
        int len = s.length();
        int[] arr = new int[len];
        Map<Character, Integer> map = Map.of('I', 1, 'V', 5, 
                                          'X', 10, 'L', 50, 
                                          'C', 100, 'D', 500, 'M', 1000);//不可变集合

        for (int i = 0; i < len; i ++) {
            arr[i] = map.get(s.charAt(i));
        }
        int ans = arr[len - 1];
        for (int i = 1; i < len; i++) {
            if (arr[i - 1] < arr[i]) {
                arr[i - 1] *= -1;
            }
            ans += arr[i - 1];
        }
        return ans;
    }
}

复习一下map的几种初始化方法:
1. 最常见的方式

Map<String, String> map = new HashMap<String, Integer>();
map.put("one", 1);
map.put("two", 2);   

2.双括号初始化/匿名内部类初始化法

HashMap<String, Integer > map = new HashMap<String, Integer>(){{  
      put("one", 1);
      put("two", 2);       
}}; 

3.最简便的方式

HashMap<String, Integer > map = Map.of("one", 1, "two", 2);
//改变它比如执行put操作会产异常java.lang.UnsupportedOperationException

4.使用ImmutableMap.of

Map<String, Integer > map = ImmutableMap.of("one", 1, "two", 2);
//也可以
Map<String, Integer> map = new ImmutableMap.Builder<String, Integer>()
    .put("one", 1)
    .put("two", 2)
    .build();
//改变它比如执行put操作会产异常java.lang.UnsupportedOperationException

这个题目是简单模拟题,大家也差不多思路,不贴别人代码了。

你可能感兴趣的:(leetcode,java,leetcode)