首页 > 解决方案 > 当我将输入 III 作为字符串输入时,罗马到整数问题它给出 333 作为答案而不是 3 有人可以更正我的代码

问题描述

如果你得到我犯错误的位置,请纠正我的 if-else 语句。请忽略这个问题的时空复杂性。忽略我检查过的条件是正确的。我应用了正确的条件,我正在考虑使用 switch语句而不是 if-else。告诉我错误,以便我可以在我的 if 语句中更正它们。

class Solution {
public:
    int romanToInt(string s) {
        int sum = 0;
        int g = s.length();
        for(int start=0;start<g;start++){
            int k = (start-1);
            if(s[start]== 'V' || s[start]== 'X' && k>=0){
                if(s[k]=='I'){
                    if(s[start]=='V'){
                        sum=sum+4;
                    }
                    if(s[start]=='X'){
                        sum=sum+9;
                    }
                }
                else{
                    if(s[start]== 'V'){
                        sum=sum+5;
                    }
                    if(s[start]=='X'){
                        sum=sum+10;
                    }
                }
            }
            if(s[start]=='L' || s[start]=='C'&& k>=0 ){
                if(s[k]=='X'){
                    if(s[start]=='L'){
                        sum = sum+40;
                    }
                    if(s[start]=='C'){
                        sum = sum+90;
                    }
                }
                else{
                    if(s[start]=='L'){
                        sum = sum+50;
                    }
                    if(s[start]=='C'){
                        sum = sum+100;
                    }
                }
            }
            if(s[start]=='D' || s[start]=='M' && k>=0){
                if(s[k]=='C'){
                    if(s[start]=='D'){
                        sum = sum+400;
                    }
                    if(s[start]=='M'){
                        sum = sum+900;
                    }
                }
                else{
                    if(s[start]=='D'){
                        sum = sum+500;
                    }
                    if(s[start]=='M'){
                        sum = sum+1000;
                    }
                }
            }
            if(s[start]=='I' && s[start+1] !='V' || s[start+1] !='X'){
                sum = sum+1;
            }
            if(s[start]=='X' && s[start+1] !='L' || s[start+1] !='C'){
                sum = sum+10;
            }
            if(s[start]=='C' && s[start+1] !='D' || s[start+1] !='M'){
                sum = sum+100;
            }
        }
        return sum;
    }
};

标签: c++for-loopif-statement

解决方案


推荐阅读