【复试上机】LeetCode刷题-简单-4.Roman to Integer

题目
题目

前言:

这种题就是paper tiger,看起来文字非常多,但是做起来缺是非常简单,相信大家在高中时期就见过这种paper tiger了。

文字思想:

①将Symbol与value对应起来,使用switch-case或者HashMap都行。

②从左到右扫描输入串:

​ a)当前字符不小于直接后继:加上该symbol的value。

​ b)当前字符小于直接后继:减去该symbol的value。

例子:

当前待处理罗马字符串:MCMXCIV
当前记录总值:0


当前处理罗马字符:M, 其对应整型数:1000
当前处理罗马字符的直接后继字符:C, 其对应整型数:100
当前字符M >= 直接后继字符:C, 执行加操作
当前记录总值:1000


当前处理罗马字符:C, 其对应整型数:100
当前处理罗马字符的直接后继字符:M, 其对应整型数:1000
当前字符C < 直接后继字符:M, 执行加操作
当前记录总值:900


当前处理罗马字符:M, 其对应整型数:1000
当前处理罗马字符的直接后继字符:X, 其对应整型数:10
当前字符M >= 直接后继字符:X, 执行加操作
当前记录总值:1900


当前处理罗马字符:X, 其对应整型数:10
当前处理罗马字符的直接后继字符:C, 其对应整型数:100
当前字符X < 直接后继字符:C, 执行加操作
当前记录总值:1890


当前处理罗马字符:C, 其对应整型数:100
当前处理罗马字符的直接后继字符:I, 其对应整型数:1
当前字符C >= 直接后继字符:I, 执行加操作
当前记录总值:1990


当前处理罗马字符:I, 其对应整型数:1
当前处理罗马字符的直接后继字符:V, 其对应整型数:5
当前字符I < 直接后继字符:V, 执行加操作
当前记录总值:1989


最后一个字符单独处理:V, 执行加操作
当前记录总值:1994

代码:


代码

复杂度:
时间复杂度:O(s.length)。空间复杂度:O(1)。

积累:

  1. 对于有一些没有规律的规则,要想到记录下来:数组记录、HashMap记录、if-else记录、switch-case记录。
  2. 整体。

推荐阅读:LeetCode刷题集合

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。