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 };
  • 相关阅读:
    小端字节序与大端字节序
    V8引擎的垃圾回收策略
    TTL 和 DNS TTL 的区别
    详解 undefined 与 null 的区别
    Node.js 事件循环机制
    requestAnimationFrame 知多少?
    Web前端知识体系精简
    Vue.js 和 MVVM 小细节
    使用 Node.js 搭建 Web 服务器
    H5单页面手势滑屏切换原理
  • 原文地址:https://www.cnblogs.com/shellfishsplace/p/5832536.html
Copyright © 2011-2022 走看看