罗马数字转整数

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猜测使用窗口思想也可行

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容