zoukankan      html  css  js  c++  java
  • leetcode------Roman to Integer

    标题: Roman to Integer
    通过率: 34.1%
    难度: 简单

    Given a roman numeral, convert it to an integer.

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

    这个题整体不是很难,就是把一串罗马数字转换成阿拉伯数字,主要是对罗马数字的了解。。我是一点也不了解,先看下罗马数字的意思:

    I 1
    V 5
    X 10
    L 50
    C 100
    D 500
    M 1000

    一般来说都是从大到小的书写,然后相加就行,但是里面会有几个特殊的,比如说 IV:5 ,CD:400等,这些是小的在前面,大的减小的即可,

    所以本题的思路就是从后向前的去处理这个字符串,整体顺序是 i:[length-1]->[0],每次比较第i位置和第i+1位置,如果i位置<i+1位置 那么就用和值减去i位置,以此类推。本题没有什么健壮性去考虑,题目中已经说了会在1-3999的字符串。仅仅处理是空的时候返回0就行了,具体算法看代码:

     1 public class Solution {
     2     public int romanToInt(String s) {
     3         Map<Character,Integer> map=new HashMap<Character,Integer>();
     4         map.put('I',1);
     5         map.put('V',5);
     6         map.put('X',10);
     7         map.put('L',50);
     8         map.put('C',100);
     9         map.put('D',500);
    10         map.put('M',1000);
    11         int length=s.length(),result=0;
    12         if(length==0)return 0;
    13         result=map.get(s.charAt(length-1));
    14         length=length-2;
    15         while(length>=0){
    16             if(map.get(s.charAt(length))<map.get(s.charAt(length+1)))
    17             {
    18                 result-=map.get(s.charAt(length));
    19                 length--;
    20             }
    21             else{
    22                 result+=map.get(s.charAt(length));
    23                 length--;
    24             }
    25                 
    26             
    27         }
    28         return result;
    29 }
    30 }

     

     

  • 相关阅读:
    Java框架-mybatis02基本的crud操作
    Java框架-mybatis01查询单个数据
    MAC常用命令
    性能测试工具Jmeter13-Jmeter跨线程组调用token
    性能测试工具Jmeter12-Jmeter连接配置带跳板机(SSH)的mysql服务器
    Java基础29-子父类中的成员变量
    Java基础28-继承
    Java基础27-单例设计模式
    启动项目时报spawn cmd ENOENT
    npm安装教程
  • 原文地址:https://www.cnblogs.com/pkuYang/p/4165941.html
Copyright © 2011-2022 走看看