题解 | #配置文件恢复#

配置文件恢复

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

// HJ66 配置文件恢复.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

#include<iostream>
#include<bits/stdc++.h>

using namespace std;

int main()
{
	string str;//定义一个待查找的字符串
	string signal = "reset";//将只有一个字串的情况单独列出来等会查找用
	vector<vector<string>>dp = { {"reset","board","board fault"},{"board","add","where to add"},{"board","delete","no board at all"},
		{"reboot","backplane","impossible"},{"backplane","abort","install first"} };//定义一个二维数组,一共五组,每组前两位为两个字串第三位为结果
	while (getline(cin, str))//可循环输入的语句,注意输入用getline而不是用cin
	{
		string res = "";//定义一个输出字符串,等待输出结果
		int n=count(str.begin(), str.end(), ' ');//定义一个整数n记录输入的字符串中有几个空格
		if (n == 0)//判断没有空格的情况为只输入了一个字串,单独处理即可
		{
			if (signal.find(str) == 0)//唯一的单独字串直接处理使用find函数查找是否从第一位开始的,如不是则说明不匹配
			{
				cout << "reset what" << endl;//如果是第一位开始的则find函数返回值为0输入相应的结果
			}
			else//否则此字串不是目标字串
			{
				cout << "unknown command" << endl;//输出未查询到
			}
		}
		else//判断输入的字串数量不为1,为第二种情况,采用数组处理
		{
			int l = str.find(' ');//定义一个整数l记录find函数返回的空格所在位置的字符串str的下标
			int count = 0;//定义一个整数记录匹配对数是否是唯一的
			string str1 = str.substr(0, l);//定义第一个字串为str1采用substr函数分割复制字符串
			string str2 = str.substr(l + 1, str.size() - l - 1);//定义第二个字串为str2采用substr函数分割复制字符串
			for (int i = 0; i < 5; i++)//遍历两个字串在数组dp中的存在情况
			{
				if (dp[i][0].find(str1) == 0 && dp[i][1].find(str2) == 0)//如果字串1和字串2都在数组dp的某个位置存在则
				{
					res = dp[i][2];//将匹配到的数组的第三位赋值给要输出的字符串res
					count++;//记录匹配次数是否为1次,大于一次则输出查询不到
				}
			}
			if (count == 1)//判断匹配次数是否为1次,大于一次则输出查询不到
			{
				cout << res << endl;//输出结果
			}
			else
			{
				cout << "unknown command" << endl;//输出无法查询到结果
			}
		}
	}
	return 0;//函数结束
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务