题解 | #配置文件恢复#

#include <bits/stdc++.h>

using namespace std;

vector<pair<string, string>> youXiaoCommand = {
    {"reset", ""},
    {"reset", "board"},
    {"board", "add"},
    {"board", "delete"},
    {"reboot", "backplane"},
    {"backplane", "abort"}
};

vector<string> commandRes = {
    "reset what",
    "board fault",
    "where to add",
    "no board at all",
    "impossible",
    "install first"
};

int main(){
    string str = "";
    while(getline(cin, str)){
        stringstream iss(str);
        string key1 = "", key2 = "";
        getline(iss, key1, ' '); //第一个关键字
        getline(iss, key2, ' '); //第二个关键字
        
        string res = "";
        int piPeiCount = 0; //记录匹配的关键字个数 (等于1时即唯一匹配到 即匹配成功)
        for(auto iter = youXiaoCommand.begin(); iter != youXiaoCommand.end(); iter++){
            int key1Pos = iter->first.find(key1); //key1在命令的前半部分第一次出现的下标 (为0匹配成功)
            int key2Pos; //key2在命令的前半部分第一次出现的下标 (为0匹配成功)
            
            if(key2 != ""){ //有key2
                key2Pos = iter->second.find(key2); //key2在命令的前半部分第一次出现的下标
            }
            else if(key2 == "" && iter->second.empty()){ //特殊情况匹配到命令 {"reset", ""},
                key2Pos = 0;
            }
            else{ //没匹配到
                key2Pos = -1;
            }
            
            if(key1Pos == 0 && key2Pos == 0){ //匹配成功
                piPeiCount++; //匹配成功的个数
                res = commandRes[iter - youXiaoCommand.begin()]; //索引位置:iter - youXiaoCommand.begin()
            }
        }
        
        if(piPeiCount == 1){ //匹配成功且为唯一匹配
            cout << res << endl;
        }
        else{//否则就是没有匹配成功,输出"unknown command"
            cout<<"unknown command"<<endl;   
        }
    }
    
    return 0;
}
全部评论

相关推荐

头像
04-09 14:29
Java
点赞 评论 收藏
转发
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务