zoukankan      html  css  js  c++  java
  • Roman to Integer [LeetCode]

    Given a roman numeral, convert it to an integer.

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

    Summary: When meeting C/X/I, remembers to search forward to check if there is a bigger number at the front. 

     1     int romanToInt(string s) {
     2         if(s.size() == 0)
     3             return 0;
     4             
     5         int num = 0;
     6         int m_idx = -1;
     7         int d_idx = -1;
     8         for(int i = 0; i < s.size(); i ++) {
     9             if(s[i] == 'C') {
    10                 m_idx = s.find_first_of('M', i + 1);
    11                 d_idx = s.find_first_of('D', i + 1);
    12                 if(m_idx > i && m_idx < s.size()){
    13                    num += 1000 - (m_idx - i)*100; 
    14                    i = m_idx;
    15                 }else if(d_idx > i && d_idx < s.size()){
    16                    num += 500 - (d_idx - i)*100; 
    17                    i = d_idx;
    18                 }else {
    19                     num += 100;
    20                 }
    21             }else if( s[i] == 'M'){
    22                 num += 1000;
    23             }else if(s[i] == 'D') {
    24                 num += 500;
    25             }else if(s[i] == 'L') {
    26                 num += 50;
    27             }else if(s[i] == 'X') {
    28                 m_idx = s.find_first_of('C', i + 1);
    29                 d_idx = s.find_first_of('L', i + 1);
    30                 if(m_idx > i && m_idx < s.size()){
    31                    num += 100 - (m_idx - i)*10; 
    32                    i = m_idx;
    33                 }else if(d_idx > i && d_idx < s.size()){
    34                    num += 50 - (d_idx - i)*10; 
    35                    i = d_idx;
    36                 }else {
    37                     num += 10;
    38                 }
    39             }else if(s[i] == 'V'){
    40                 num += 5;
    41             }else if(s[i] == 'I') {
    42                 m_idx = s.find_first_of('X', i + 1);
    43                 d_idx = s.find_first_of('V', i + 1);
    44                 if(m_idx > i && m_idx < s.size()){
    45                    num += 10 - (m_idx - i);
    46                    i = m_idx;
    47                 }else if(d_idx > i && d_idx < s.size()){
    48                    num += 5 - (d_idx - i); 
    49                    i = d_idx;
    50                 }else {
    51                     num += 1;
    52                 }
    53             }
    54         }
    55         return num;
    56     }
  • 相关阅读:
    换行的展示
    jsp页面的导出功能
    怎么设置回车键为提交功能?
    HBuilder使用心得
    js和jQuery
    前端常用技术总结--java程序员
    对压缩文件加密
    删除表中一个字段的SQL语句
    用NPOI操作EXCEL-锁定列CreateFreezePane()
    MVC 点击下载文档
  • 原文地址:https://www.cnblogs.com/guyufei/p/3403648.html
Copyright © 2011-2022 走看看