题目描述
给定两个字符串 S1 和 S2,S=S1−S2 定义为将 S1 中包含的所有在 S2 中出现过的字符删除后得到的字符串。
你的任务就是计算 S1−S2。
输入格式
共两行,第一行包含字符串 S1,第二行包含字符串 S2。
输出格式
输出共一行,表示 S1−S2 的结果。
数据范围
两个给定字符串的长度都不超过 104。
样例
输入样例
They are students.
aeiou
输出样例
Thy r stdnts.
算法1
$O(n)$
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[200]; //利用桶来标记出现的字符
int main()
{
getline(cin,s1);
getline(cin,s2);
int len1=s1.length();
int len2=s2.length();
for(int i=0;i<len2;i++)
{
a[s2[i]]=1; //把出现的字符都标记一下
}
for(int i=0;i<len1;i++)
{
if(a[s1[i]]==0) //仅输出在s2没出现的字符
{
cout<<s1[i];
}
}
printf("\n");
return 0;
}
利用的是字符串的ascii码,很巧妙
句号不算字符吗?
字符串杰法
欧哟,居然找到原题了,巨啊
字符串杰法
字符串杰法