Given two strings S1 and S2, S=S1−S2 is defined to be the remaining string after taking all the characters in S2 from S1. Your task is simply to calculate S1−S2 for any given strings. However, it might not be that simple to do it fast.
Each input file contains one test case. Each case consists of two lines which gives S1 and S2, respectively. The string lengths of both strings are no more than 104. It is guaranteed that all the characters are visible ASCII codes and white space, and a new line character signals the end of a string.
For each test case, print S1−S2 in one line.
They are students.
aeiou
Thy r stdnts.
给出两行字符串,要求在第一行字符串中删去第二行字符串包含的字符。
因为有速度上的要求,所以用两个循环来做肯定是不行的。所以我们在读入第二行的字符时需要对他们做一个标记,带有这个标记的字符在输出的时候就可以不输出,时间复杂度就是O(n)啦;用map就可以很好的解决这个问题。
因为是对每个字符进行标记所以要用char,map
char读取一行的代码如下:
- char b;
- b = getchar();//读取字符
- while(b != '\n'){//当不是换行的时候
- S1[j]=b;//塞入char数组
- j++;//下标往后移动
- b = getchar();//继续读取下一个字符
- }
- #include
- using namespace std;
- int main(){
- map<char,int> print;//标记该字符是否需要输出
- char S1[10001];//记录S1字符串
- int j=0;//统计S1字符串有几个字符
- char b;
- b = getchar();
- while(b != '\n'){
- S1[j]=b;
- j++;
- b = getchar();
- }
- b = getchar();
- while(b != '\n'){
- print[b]=1;
- b = getchar();
- }
- for(int i=0;i
- if(print.count(S1[i]) > 0 ){
- }
- else{
- cout<
- }
- }
- return 0;
- }
-
相关阅读:
23云计算全国职业技能大赛容器云-容器编排
【AI实践案例】基于Encoder-Decoder模型的Word Level英语到Marathi神经机器翻译
由于找不到packet.dll,无法继续执行代码的多种解决方法分享
嵌入式开发学习之--Git管理代码
如何按照洁净区不同等级选择不同流量的粒子计数器设备?
团子杂记:SAP收入确认工具RAR(Revenue Recognition&Reporting)在新收入准则下的应用
Linux(4):Linux文件与目录管理
前端正则校验
dB family cheat sheet: dB, dBW, dBm, dBi, dBc, etc
Induced AI:一个专门为自动化任务而设计的AI原生浏览器RPA平台
-
原文地址:https://blog.csdn.net/weixin_55202895/article/details/126562312