#屎山代码#配置文件恢复#时空复杂度o(n)/o(1)

配置文件恢复

https://www.nowcoder.com/practice/ca6ac6ef9538419abf6f883f7d6f6ee5

#include <unordered_map>
#include <iostream>
#include <vector>
using namespace std;

unordered_map<string,int> reset;
unordered_map<string,int> board;
unordered_map<string,int> reboot;
unordered_map<string,int> backplane;
unordered_map<string,int> add;
unordered_map<string,int> Delete;
unordered_map<string,int> Abort;

vector<string> split(string order){
    vector<string> order_list;
    if(order[0]!='r'&&order[0]!='b') return order_list;
    string temp;
    int length = order.length();
    for(int i=0;i<length;i++){
        if(order[i]!=' ') temp.push_back(order[i]);
        else{
            if(i==length-1||(order[i+1]!='b'&&order[i+1]!='a'&&order[i+1]!='d')){
                order_list.clear();
                return order_list;
        }
            else{
                order_list.push_back(temp);
                temp.clear();
            }
        }
    }
    order_list.push_back(temp);
    return order_list;
}

string process(string order){
    vector<string> order_list = split(order);
    if(order_list.size()==1){
        string s1 = order_list[0];
        if(reset.find(s1)!=reset.end()) return "reset what";
        else return "unknown command";
    }
    else if(order_list.size()==2){
        string s1 = order_list[0],s2 = order_list[1];
        if(board.find(s1)!=board.end()&&Delete.find(s2)!=Delete.end()) return "no board at all";
        else if(reset.find(s1)!=reset.end()&&board.find(s2)!=board.end()){
            if(reboot.find(s1)==reboot.end()||(reboot.find(s1)!=reboot.end()&&backplane.find(s2)==backplane.end())) return "board fault";
            else return "unknown command";
        }
        else if(board.find(s1)!=board.end()&&add.find(s1)!=add.find(s2)){
            if(backplane.find(s1)==backplane.end()||(backplane.find(s1)!=backplane.end()&&Abort.find(s2)==Abort.end())) return "where to add";
            else return "unknown command";
        }
        else if(reboot.find(s1)!=reboot.end()&&backplane.find(s2)!=backplane.end()){
            if(reset.find(s1)==reset.end()||(reset.find(s1)!=reset.end()&&board.find(s2)==board.end())) return "impossible";
            else return "unknown command";
        }
        else if(backplane.find(s1)!=backplane.end()&&Abort.find(s2)!=Abort.end()){
            if(board.find(s1)==board.end()||(board.find(s1)!=board.end()&&add.find(s2)==add.end())) return "install first";
            else return "unknown command";
        }
        else return "unknown command";
    }
    else{
        return "unknown command";
    }
}
int main() {
    string order;
    string s1="reset",s2="board",s3="reboot",s4="backplane",s5="add",s6="delete",s7="abort";
    for(int i=1;i<=5;i++){reset.insert(make_pair(s1.substr(0,i),1));}
    for(int i=1;i<=5;i++){board.insert(make_pair(s2.substr(0,i),1));}
    for(int i=1;i<=6;i++){reboot.insert(make_pair(s3.substr(0,i),1));}
    for(int i=1;i<=9;i++){backplane.insert(make_pair(s4.substr(0,i),1));}
    for(int i=1;i<=3;i++){add.insert(make_pair(s5.substr(0,i),1));}
    for(int i=1;i<=6;i++){Delete.insert(make_pair(s6.substr(0,i),1));}
    for(int i=1;i<=5;i++){Abort.insert(make_pair(s7.substr(0,i),1));}
    while (getline(cin,order)) {
        cout<<process(order)<<endl;
    }
    return 0;
}

全部评论

相关推荐

最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
头像
10-15 22:27
已编辑
门头沟学院 C++
罗格镇的小镇做题家:我投了hr打电话来说学历太低了不符合要求,建议投荣耀,结果荣耀也投了一定水花没有,非本211硕
投递华为等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务