zoukankan      html  css  js  c++  java
  • leetcode 13

    罗马数字是阿拉伯数字传入之前使用的一种数码。罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。
    记数的方法:
    1. 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
    2. 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
    3. 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
    4. 在一个数的上面画一条横线,表示这个数增值 1,000 倍,如
       
      =5000。


    思路:将罗马数字的每个字母按照顺序转换成整数存入数组中;然后按照上述规则操作数组,得到最后的结果。

    代码如下:

     1 class Solution {
     2 public:
     3     int romanToInt(string s) {
     4         int result = 0;
     5         int last = 0;
     6         vector<int> tag;
     7         int n = s.length();
     8         for(int i = 0; i < n; ++i)
     9         {
    10            switch (s[i])
    11            {
    12             case 'I':
    13                 tag.push_back(1);
    14                 break;
    15             case 'X':
    16                 tag.push_back(10);
    17                 break;
    18             case 'C':
    19                 tag.push_back(100);
    20                 break;
    21             case 'M':
    22                 tag.push_back(1000);
    23                 break;
    24             case 'V':
    25                 tag.push_back(5);
    26                 break;
    27             case 'L':
    28                 tag.push_back(50);
    29                 break;
    30             case 'D':
    31                 tag.push_back(500);
    32                 break;
    33            }
    34            result = result + tag[i];
    35         }
    36         for(int i = 0; i < n-1; ++i)
    37         {
    38             if(tag[i] == 1 || tag[i] == 10 || tag[i] == 100)
    39             {
    40                 if(tag[i] < tag[i+1])
    41                 {
    42                     result = result - 2 * tag[i];
    43                 }
    44             }
    45         }
    46         
    47         return result;
    48     }
    49 };
  • 相关阅读:
    angular.element函数
    mknod创建命名管道(I/O缓存)
    谈谈sipXecs及其它【转】
    Linux下判断cpu物理个数、几核
    shell 中判断文件/文件夹是否存在
    一个人可以用Open IMS Core做什么呢
    linux 下更改磁盘名
    PPTP 服务器配置
    IP多媒体子系统[转维基百科]
    针对用编译的方式安装时的卸载
  • 原文地址:https://www.cnblogs.com/shellfishsplace/p/5832536.html
Copyright © 2011-2022 走看看