zoukankan      html  css  js  c++  java
  • 419. Roman to Integer【medium】

    Given a roman numeral, convert it to an integer.

    The answer is guaranteed to be within the range from 1 to 3999.

    Example

    IV -> 4

    XII -> 12

    XXI -> 21

    XCIX -> 99

    题意

    计数方法:

    基本字符
    I
    V
    X
    L
    C
    D
    M
    相应的阿拉伯数字表示为
    1
    5
    10
    50
    100
    500
    1000
    1. 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
    2. 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
    3. 小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
    4. 正常使用时、连写的数字重复不得超过三次;
    5. 在一个数的上面画一条横线、表示这个数扩大 1000 倍。

    组数规则:

    有两条须注意掌握:
    1. 基本数字 Ⅰ、X 、C 中的任何一个、自身连用构成数目、或者放在大数的右边连用构成数目、都不能超过三个;放在大数的左边只能用一个;
    2. 不能把基本数字 V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目、只能使用一个;

    解法一:

     1 class Solution {
     2 public:
     3     /*
     4      * @param s: Roman representation
     5      * @return: an integer
     6      */
     7     int romanToInt(string s) {
     8         int ans = 0;
     9         ans = toInt(s[0]);
    10         
    11         for (int i = 1; i < s.length(); i++) {
    12             ans += toInt(s[i]);
    13           
    14             if (toInt(s[i-1]) < toInt(s[i])) { 
    15                 ans -= toInt(s[i-1]) * 2;
    16             } 
    17         }
    18         
    19         return ans;
    20     }
    21   
    22     int toInt(char s) {
    23         switch(s) {
    24             case 'I':return 1;
    25             case 'V':return 5;
    26             case 'X':return 10;
    27             case 'L':return 50;
    28             case 'C':return 100;
    29             case 'D':return 500;
    30             case 'M':return 1000;
    31         }
    32         return 0;
    33     }
    34 };
     
  • 相关阅读:
    MySQL锁
    mysql服务性能优化—my.cnf配置说明详解
    springmvc请求参数获取的几种方法
    Linux mysql 添加远程连接
    Linux 操作 mysql
    Linux 安装 mysql 转 http://www.cnblogs.com/fnlingnzb-learner/p/5830622.html
    linux 下 安装nginx
    dubbo 实战总结
    分布式事务的几种方式
    精巧好用的DelayQueue 转
  • 原文地址:https://www.cnblogs.com/abc-begin/p/8413681.html
Copyright © 2011-2022 走看看