博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
13. Roman to Integer
阅读量:5108 次
发布时间:2019-06-13

本文共 1049 字,大约阅读时间需要 3 分钟。

Given a roman numeral, convert it to an integer.

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

思路:之前一直觉得罗马数字好麻烦,一刷的时候看到就头疼不想做。看了看wiki之后感觉其实也还好。这道题直接给了一个valid罗马数字,就可以直接从后往前算,不用考虑那么多规则了,除了小在大前面要用大减小之外,其他就累加。用hashmap存一下对应的值,然后用一个prev来存一下后一位的罗马数字用来比较current即可。

罗马数字ref:https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97

public class Solution {    public int romanToInt(String s) {        int res=0;        Map
save=new HashMap
(); save.put('I',1); save.put('V',5); save.put('X',10); save.put('L',50); save.put('C',100); save.put('D',500); save.put('M',1000); int prev=0; for(int i=s.length()-1;i>=0;i--) { int current=save.get(s.charAt(i)); if(current>=prev) { res+=current; } else { res-=current; } prev=current; } return res; }}

 

转载于:https://www.cnblogs.com/Machelsky/p/5858980.html

你可能感兴趣的文章
C#综合揭秘——细说多线程(下)
查看>>
c#运算符 ?
查看>>
【题解】青蛙的约会
查看>>
求给定字符串的最长子字符串
查看>>
.26-浅析webpack源码之事件流make(1)
查看>>
IO流
查看>>
mybatis调用存储过程,获取返回的游标
查看>>
设计模式之装饰模式(结构型)
查看>>
面向对象的设计原则
查看>>
Swift3.0服务端开发(三) Mustache页面模板与日志记录
查看>>
【转】 FPGA设计的四种常用思想与技巧
查看>>
C++:同名隐藏和赋值兼容规则
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>
新手算法学习之路----二叉树(在一个二叉查找树中插入一个节点)
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
基于C#编程语言的Mysql常用操作
查看>>
【转】Java反射 之 反射基础
查看>>
mysql数据库备份和还原的常用命令
查看>>
s3c2440实验---定时器
查看>>