• 【Leetcode】【Easy】Roman to Integer


    Given a roman numeral, convert it to an integer.

    Input is guaranteed to be within the range from 1 to 3999.

    解题:

    将字符形式的罗马数字,转化为整形。输入在1~3999之间。罗马数字的书写规范,请参见罗马数字_百度百科

    本题的关键点在于,如何处理I、X、C三个数字放在大数左边是相减,放在大数右边是相加。

    解法是,可以从输入字符串的末端开始,从右向左遍历字符串。对于出现的一般罗马字符,进行累加,当出现I、X、C时,判断当前累加值是否达到(>=)5、50、500。如果达到则为相减,如果未达到,则为相加。

    原因是,单反需要相减,必定是在大数的左边,因此必定大数已经出现。

     1 class Solution {
     2 public:
     3     int romanToInt(string s) {
     4         int len = s.length();
     5         int sum = 0;
     6         
     7         for (int i=len-1; i>=0; --i) {
     8             if (s[i] == 'I')
     9                 sum += sum >= 5 ? -1 : 1;
    10             
    11             if (s[i] == 'V')
    12                 sum += 5;
    13             
    14             if (s[i] == 'X')
    15                 sum += sum >= 50 ? -10 : 10;
    16                 
    17             if (s[i] == 'L')
    18                 sum += 50;
    19                 
    20             if (s[i] == 'C')
    21                 sum += sum >= 500 ? -100 : 100;
    22                 
    23             if (s[i] == 'D')
    24                 sum += 500;
    25             
    26             if (s[i] == 'M')
    27                 sum += 1000;
    28         }
    29     
    30         return sum;
    31     }
    32 };
  • 相关阅读:
    innerHTML和innerText的区别
    AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
    事件初理解2不兼容
    那些宽高
    面试题
    事件初理解2不兼容
    ajax初理解
    attribute和property的区别
    启动nuxt项目fsevents报错
    CSS实现三栏布局(5种)
  • 原文地址:https://www.cnblogs.com/huxiao-tee/p/4227359.html
Copyright © 2020-2023  润新知