思路
通过给的罗马字符,得到相对应的整数,看到题示,就想到了使用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等几个的区别,有一些是和线程有关的,还要等到之后的学习中才能更清楚,需要继续学习。