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

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

标题: 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
map=new HashMap
(); 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))

 

 

 

转载于:https://www.cnblogs.com/pkuYang/p/4165941.html

你可能感兴趣的文章
C#基础第五天
查看>>
uva 12325 枚举暴力 b
查看>>
多线程问题(JVM重排序)
查看>>
POJ 3268 Silver Cow Party
查看>>
EMLS项目推进思考
查看>>
Eclipse快捷键 10个最有用的快捷键
查看>>
2018-2019-1 20165302 实验五 通讯协议设计
查看>>
Golang 知识点总结
查看>>
JAVA 8 特性
查看>>
算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列
查看>>
WebService之Axis2快速入门(7): Spring与axis整合发布为WebServic
查看>>
Uliweb查看模板调用关系
查看>>
C#与PHP通信压缩
查看>>
关于 Linux
查看>>
图文解析五大外链误区
查看>>
ios开发之导航控制器的原理
查看>>
《Netkiller Blockchain 手札》Hyperledger Fabric Java SDK Demo
查看>>
Linux系统_Centos7下安装Nginx
查看>>
《PHP和MySQL Web 开发》 第12章 MySQL高级管理
查看>>
数据库设计 Step by Step (6) —— 提取业务规则
查看>>