LeetCode第十三题

题目描述
采用哈希表,将每种可能的情况都保存在hashmap中。

hashMap
(此处不把II 和III这两种情况列入其中,之前钻到这个坑中)
然后遍历字符串,对每一位进行匹配,若当前位以及下一位组成的字符串存在于hashmap中,则根据“键”,获取“值”。
若无法匹配两个字符的字符串,则匹配一位的字符串,同样根据“键”,获取“值”,修改结果。
自己写的不用map的代码
class Solution {
public int romanToInt(String s) {
int result=0;
char[]array=s.toCharArray();
for(int i=0;i<s.length();i++){
if(array[i]=='I'){
if(i<s.length()-1){
if(array[i+1]=='V')
{
result=result+4;
i=i+1;
}
else if(array[i+1]=='X')
{
result=result+9;
i=i+1;
}
else
{
result=result+1;
}
}else{
result=result+1;
}
}else if(array[i]=='X'){
if(i<s.length()-1){
if(array[i+1]=='L')
{
result=result+40;
i=i+1;
}
else if(array[i+1]=='C')
{
result=result+90;
i=i+1;
}
else result=result+10;
}
else result=result+10;
}
else if(array[i]=='C'){
if(i<s.length()-1){
if(array[i+1]=='D')
{
result=result+400;
i=i+1;
}
else if(array[i+1]=='M')
{
result=result+900;
i=i+1;
}
else result=result+100;
}
else result=result+100;
}
else if(array[i]=='V')
result=result+5;
else if(array[i]=='L')
result=result+50;
else if(array[i]=='D')
result=result+500;
else if(array[i]=='M')
result=result+1000;
}
return result;
}
}
PS猜测使用窗口思想也可行