题目描述
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
- 输入描述:
每个测试输入包含2个字符串
- 输出描述:
输出删除后的字符串
- 示例1
- 输入
They are students. aeiou
- 输出
Thy r stdnts.
解题思路
创建一个哈希映射数组,将第二个字符数组中出现的字符次数算出来,然后存放到哈希数组中,然后遍历第一个字符数组,如果遍历哈希数组,如果为 0 , 说明这个字符就是没有重复的字符,然后返回新的数组。
#include <iostream>
#include <string>
using namespace std;
int main(){
string str1, str2;
//使用 cin,会导致遇到空格就结束的情况
getline(cin, str1);
getline(cin, str2);
//创建哈希数组计算字符出现的次数
int hashtable[256] = {0};
for(size_t i = 0; i < str2.size(); i++){
hashtable[str2[i]]++;
}
//创建临时对象,然后将没有重复的字符,返回到 ret 对象中
string ret;
for(size_t i = 0; i < str1.size(); i++){
if(hashtable[str1[i]] == 0)
ret += str1[i];
}
cout<<ret<<endl;
return 0;
}