zoukankan      html  css  js  c++  java
  • 13. Roman to Integer

    题目链接:https://leetcode.com/problems/roman-to-integer/description/
    汉字意思大概就是:罗马数字字符串转换为整形数字。想要解决这道题,首先得充分理解罗马数字的特点,可以看百科百科:https://baike.baidu.com/item/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97/772296?fr=aladdin
    刚开始我自己对罗马数字特点不熟悉,所以对这道简单的题目一脸懵逼,然后看了下别人提交的答案,找到了两个质量较高的答案吧:

    /**
     * Created by clearbug on 2018/2/26.
     */
    public class Solution {
    
        public static void main(String[] args) {
            System.out.println("romanToInt = " + romanToInt("I") + ", romanToInt2 = " + romanToInt2("I"));
            System.out.println("romanToInt = " + romanToInt("X") + ", romanToInt2 = " + romanToInt2("X"));
            System.out.println("romanToInt = " + romanToInt("C") + ", romanToInt2 = " + romanToInt2("C"));
            System.out.println("romanToInt = " + romanToInt("M") + ", romanToInt2 = " + romanToInt2("M"));
            System.out.println("romanToInt = " + romanToInt("III") + ", romanToInt2 = " + romanToInt2("III"));
            System.out.println("romanToInt = " + romanToInt("IV") + ", romanToInt2 = " + romanToInt2("IV"));
            System.out.println("romanToInt = " + romanToInt("VI") + ", romanToInt2 = " + romanToInt2("VI"));
            System.out.println("romanToInt = " + romanToInt("XIX") + ", romanToInt2 = " + romanToInt2("XIX"));
            System.out.println("romanToInt = " + romanToInt("XI") + ", romanToInt2 = " + romanToInt2("XI"));
            System.out.println("romanToInt = " + romanToInt("XX") + ", romanToInt2 = " + romanToInt2("XX"));
            System.out.println("romanToInt = " + romanToInt("XLV") + ", romanToInt2 = " + romanToInt2("XLV"));
            System.out.println("romanToInt = " + romanToInt("MCMLXXX") + ", romanToInt2 = " + romanToInt2("MCMLXXX"));
        }
    
        public static int romanToInt(String s) {
            int sum = 0;
            if (s.contains("IV")) {
                sum -= 2;
            }
            if (s.contains("IX")) {
                sum -= 2;
            }
            if (s.contains("XL")) {
                sum -= 20;
            }
            if (s.contains("XC")) {
                sum -= 20;
            }
            if (s.contains("CD")) {
                sum -= 200;
            }
            if (s.contains("CM")) {
                sum -= 200;
            }
    
            char[] cArr = s.toCharArray();
            for (int i = 0; i < cArr.length; i++) {
                if (cArr[i] == 'M') {
                    sum += 1000;
                }
                if (cArr[i] == 'D') {
                    sum += 500;
                }
                if (cArr[i] == 'C') {
                    sum += 100;
                }
                if (cArr[i] == 'L') {
                    sum += 50;
                }
                if (cArr[i] == 'X') {
                    sum += 10;
                }
                if (cArr[i] == 'V') {
                    sum += 5;
                }
                if (cArr[i] == 'I') {
                    sum += 1;
                }
            }
    
            return sum;
        }
    
        public static int romanToInt2(String s) {
            int res = 0;
            for (int i = s.length() - 1; i >= 0; i--) {
                char c = s.charAt(i);
                switch (c) {
                    case 'I':
                        res += (res >= 5 ? -1 : 1);
                        break;
                    case 'V':
                        res += 5;
                        break;
                    case 'X':
                        res += 10 * (res >= 50 ? -1 : 1);
                        break;
                    case 'L':
                        res += 50;
                        break;
                    case 'C':
                        res += 100 * (res >= 500 ? -1 : 1);
                        break;
                    case 'D':
                        res += 500;
                        break;
                    case 'M':
                        res += 1000;
                        break;
                }
            }
            return res;
        }
    
    }
    
  • 相关阅读:
    立方体的形成
    三维变换
    实现任意元素居中
    多个transform 属性案例
    旋转轴心案例
    codeforces 706B B. Interesting drink(二分)
    codeforces 706A A. Beru-taxi(水题)
    hdu-5831 Rikka with Parenthesis II(贪心)
    hdu-5826 physics(数学)
    hdu-5813 Elegant Construction(贪心)
  • 原文地址:https://www.cnblogs.com/optor/p/8504043.html
Copyright © 2011-2022 走看看