zoukankan      html  css  js  c++  java
  • 【leetcode刷题笔记】Roman to Integer

    Given a roman numeral, convert it to an integer.

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


    题解:转换的方法:从左往右扫描罗马字符,如果当前的字符对应的数字比上一个数字小,就直接加上这个数字;否则加上这个数字并且减去上一个数字的两倍,然后更新上一个数字。利用一个HashMap存放罗马字符和数字的对应。

    罗马数字和阿拉伯数字的对应表格参见http://www.cnblogs.com/sunshineatnoon/p/3856057.html

    例如罗马数字DCXIX:500+100+10+1+10-2 = 619

    代码如下:

     1 public class Solution {
     2     public int romanToInt(String s) {
     3         if(s == null || s.length() == 0)
     4             return 0;
     5         
     6         HashMap<Character, Integer> map= new HashMap<Character,Integer>();
     7         map.put('I', 1);
     8         map.put('V', 5);
     9         map.put('X', 10);
    10         map.put('L', 50);
    11         map.put('C', 100);
    12         map.put('D', 500);
    13         map.put('M', 1000);
    14         
    15         int length = s.length();
    16         int result = map.get(s.charAt(0));
    17         int last = result;
    18         
    19         for(int i = 1;i < length;i++){
    20             int temp = map.get(s.charAt(i));
    21             if(temp <= last)
    22                 result += temp;
    23             else
    24                 result = result + temp - 2*last;
    25             last = temp;
    26         }
    27         
    28         return result;
    29     }
    30 }
  • 相关阅读:
    Linux定时任务
    linux文件权限
    grep awk sed 三剑客
    用户管理
    find查找inode号删除文件
    find 查找文件或目录 及du命令
    11、注册新用户
    10、密码扩展,使用Flask-Login认证用户
    9、大型程序的结构
    8、目前flask程序结构
  • 原文地址:https://www.cnblogs.com/sunshineatnoon/p/3856080.html
Copyright © 2011-2022 走看看