zoukankan      html  css  js  c++  java
  • 【简单】罗马数字转整数

    https://leetcode-cn.com/problems/roman-to-integer/

    能比较快想到的一个方法:

    public class RomanToInt {
        public static int romanToInt(String s) {
            int ret = 0;
            Map<String,Integer> map = new HashMap<>();
            Map<String,Integer> mapCombine = 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);
            mapCombine.put("IV",4);
            mapCombine.put("IX",9);
            mapCombine.put("XL",40);
            mapCombine.put("XC",90);
            mapCombine.put("CD",400);
            mapCombine.put("CM",900);
            char[] charArr = s.toCharArray();
            int i = 0;
            if(s.length() == 1){
                ret += map.get(String.valueOf(charArr[0]));
            }else{
                while(i < s.length()){
                    if((i+1) >= s.length()) {
                        ret += map.get(String.valueOf(charArr[i]));
                        break;
                    }
                    if(mapCombine.containsKey(String.valueOf(charArr[i]) + String.valueOf(charArr[i+1]))){
                        ret += mapCombine.get(String.valueOf(charArr[i]) + String.valueOf(charArr[i+1]));
                        i=i+2;
                     }else{
                        ret += map.get(String.valueOf(charArr[i]));
                        i++;
                    }
                }
            }
            return ret;
        }
        public static void main(String[] args){
            System.out.println(romanToInt("III"));
            System.out.println(romanToInt("IV"));
            System.out.println(romanToInt("IX"));
            System.out.println(romanToInt("LVIII"));
            System.out.println(romanToInt("MCMXCIV"));
        }
    }
    

      网上看到还有一个更直观的解法

            int ret = 0;
            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("O",4);
            map.put("P",9);
            map.put("Q",40);
            map.put("R",90);
            map.put("S",400);
            map.put("T",900);
            s = s.replaceAll("IV","O");
            s = s.replaceAll("IX","P");
            s = s.replaceAll("XL","Q");
            s = s.replaceAll("XC","R");
            s = s.replaceAll("CD","S");
            s = s.replaceAll("CM","T");
            char[] charArr = s.toCharArray();
            for(char c : charArr){
                ret += map.get(String.valueOf(c));
            }
            return ret;
    

      

  • 相关阅读:
    Git工作中用法(Gitlab)
    面试记录,不定时更新中。。。
    webservice 技术改进
    HTTP详解
    Git学习05 --分支管理02
    Git学习04 --分支管理
    链表判环问题
    k-选取问题
    图片与字符串(base64编码)的转化
    二叉堆与堆排序的简单实现
  • 原文地址:https://www.cnblogs.com/cstar/p/14732675.html
Copyright © 2011-2022 走看看