14罗马字符转整数

 思路

通过给的罗马字符,得到相对应的整数,看到题示,就想到了使用map表,因为正好一个字符对应一个数,用字符作为key值,数值存入value值,这样只需要遍历然后把对应的value值加起来就能得到最后的结果

 问题

怎么解决上述特殊情况。

因为一个字符对应一个数,正好符合map的形式,罗马字符对应key值,数值对应value值,根据字符取数,再相加得到答案

一开始先建表,但map又有多个子类,我想到了tree和hash

其中树更偏向于数值的顺序,这里不需要排序,而hashmap更快,没什么数据顺序的要求,所以选择hashmap

根据所给的对应值建立map表

再想到写判断,但就会有6种判断,I与V的位置,I与X的位置,X与L的位置,X与C的位置,C与D的位置,C与M的位置,而且每种判断都是为了得到值,就想到,既然都是根据字符判断值,不如也写成map的形式

 然后就得到了整个map表

接下来就是判断的过程了,先依次拿出字符串的两个字符,判断这两个字符是否在map里,如果不在则一个一个加,如果有对应值,则拿出对应值,指针偏移+1

 心得

当学完map后,很多情况面对有字符对应数值,或者数值对应数值,下标对应数值的情况都会想想能不能使用map来解决,很多题目上手就会有些思路,比起一开始毫无头绪,现在会更有头绪一点,写这道题的时候,用到map,让我去回头看了几遍treemap,hashmap等几个的区别,有一些是和线程有关的,还要等到之后的学习中才能更清楚,需要继续学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值