目录
牛客_抄送列表(切割字符串)
解析代码
牛客_抄送列表(切割字符串)
抄送列表__牛客网
解析代码
本题是在第一行的人名中,查找第二行的人名是否存在。牵涉一个全字匹配的问题。步骤:
- 通过getiine(cin, names)方法获取第一行中的所有名字。
- 解析出第一行中的所有名字保存在unordered_set中。
- 获取第二行中的名字,检测该名字是否存在,并按照题目的要求进行输出。
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
string str1, str2;
while (getline(cin, str1))
{
// 将第一行中的所有名字进行拆解,保存在unordered_set中
unordered_set<string> s;
size_t pos = 0;
while (pos < str1.size())
{
if (str1[pos] == '\"') // 该名字使用""包含了,将该名字截取出来
{
size_t end = str1.find("\"", pos + 1);
s.insert(str1.substr(pos + 1, end - pos - 1));
pos = end + 2; // 跳掉后面的双引号和逗号
}
else // 该名字没有使用""包含,找到改名字的末尾后直接截取
{
size_t end = str1.find(",", pos + 1);
if (end == -1) // 已经是最后一个名字了
{
s.insert(str1.substr(pos, str1.size() - pos));
break;
}
s.insert(str1.substr(pos, end - pos));
pos = end + 1; //跳掉后面的逗号
}
}
getline(cin, str2); // 接收第二行的名字,然后检测其是否存在
if (s.find(str2) == s.end())
cout << "Important!" << endl;
else
cout << "Ignore" << endl;
}
return 0;
}