【每日一题】删除公共字符
相关推荐阅读👀
【C/C++】关于循环/多次输入字符或字符串时,清除缓冲区的问题
【C/C++】常见的几种字符串的输入与输出
【C/C++】C++中字符串的输入与循环输入
1、题目来源
牛客网:删除公共字符
1、题目描述
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入They are students.
和aeiou
,则删除之后的第一个字符串变成Thy r stdnts.
2、输入/出描述
输入描述:
每个测试输入包含
2
个字符串
输出描述
输出删除后的字符串
4、示例
输入: They are students. aeiou
输出: Thy r stdnts.
5、解题思路
题目中没有要求循环输入,可以不用考虑。
从第一个字符串中删除第二个字符串中所有的字符。那么至少遍历一遍第一个字符串,拿到第一个字符串的第i个元素看其是否在第二个字符串,没有在就可以把这第i个元素存放在临时变量中,遍历完第一个字符串后,输出临时变量即可。
另外看到有小伙伴用到哈希映射的思想,是将第二个字符串的字符都映射到 hashtable 数组中,用来判断一个字符是否在这个字符串中,欢迎小伙伴评论区下方讨论哈哈哈 👨💻
6、代码展示
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1,str2,str3;
getline(cin, str1); //通过getline将回车前的输入流读到str1当中
getline(cin, str2);
int i = 0;
while(str1[i]) //遍历str1
{
if (str2.find(str1[i],0) == str2.npos)
//find在str2中未找到返回str2.npos,find的第二个参数为 0表示查找整个字符串
{
str3 += str1[i]; //把str1[i]加至str3
}
i++;
}
cout << str3 << endl;
return 0;
}