leetcode做题记录0013
发布日期:2021-05-07 13:47:48 浏览次数:21 分类:精选文章

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

leetcode 0013

说明

只是为了记录一下,不求多快,也不深究。

会简要描述思路,代码中不写注释。

如碰到不会做的用了别人代码会在博客中标出。

题目描述

在这里插入图片描述

在这里插入图片描述

结果

在这里插入图片描述

思路

每次读两个字符

  • 如果前一个大于等于后一个,则把前一个字符对应的值加进来,游标向后移一位;

  • 否则把后一个的值减去前一个的值加进来,游标向后移两位。

  • 最后一个字符是单个字符的话就没有读到,就判断一下是不是单个字符,是的话就读一下。

明明就只要遍历一遍,效果居然这么差。

代码

class Solution {       public int romanToInt(String s) {           Map
map = new HashMap
(); map.put("I", 1); map.put("V", 5); map.put("X", 10); map.put("L", 50); map.put("C", 100); map.put("D", 500); map.put("M", 1000); int num = 0; int len = s.length(); if(len == 1) { return map.get(s); } for(int i = 0;i
=map.get(String.valueOf(s.charAt(i+1)))) { num += map.get(String.valueOf(s.charAt(i))); }else { num += map.get(String.valueOf(s.charAt(i+1))) - map.get(String.valueOf(s.charAt(i))); ++i; } } if(map.get(String.valueOf(s.charAt(len-1)))<=map.get(String.valueOf(s.charAt(len-2)))) { num += map.get(String.valueOf(s.charAt(s.length()-1))); } return num; }}
上一篇:leetcode做题记录0014
下一篇:leetcode做题记录0012

发表评论

最新留言

很好
[***.229.124.182]2025年04月12日 08时27分04秒