A 简单的字符串处理
TimeLimit: 1000ms MemoryLimit:32MB
Type: 传统题 Special:No
已AC
Problem Description
给你两个字符串s1,s2,若s1中的一部分与字符串s2完全相同,则删去这部分。如果删除后s1中仍存在某一部分与s2相同,则继续删除下去,直到s1中没有任何一部分与s2相同
Input
多组输入
第一行给你两个字符串,用空格分开,保证字符串s2中的各个字符都是不同的,字符串s1,s2长度大于等于1小于等于100
Output
输出s1字符串,若s1字符串为空,则输出NULL
SampleInput
aaawww aw
awslawslaw awsl
qifei wuhu
SampleOutput
NULL
aw
qifei
Hint
对于第一组样例,字符串s1的变化过程为
aaawww--->aaww--->aw--->NULL
对于第二组样例,字符串s1的变化过程为
awslawslaw--->aw
对于第三组样例,字符串s1的变化过程为
qifei
这是本场的第一道题,难度适中,主要考察字符串的处理问题。
解题思路:每次删除S1中的S2就把那些字符替换为' ',然后每次循环把S1更新一遍,最后S1的长度为0输出NULL否则输出剩下的S1。
如果单次循环未删除任何字符就退出break。注意多组输入!!!
代码如下:
#include<bits/stdc++.h> using namespace std; int main(void) { char s1[105],s2[105],ch[105];//ch是中转字符串,用于更新S1 while(cin>>s1>>s2) { int lens1=strlen(s1); int lens2=strlen(s2); int len=lens1; while(1) { int flag=1;//判断是否有删除操作 lens1=strlen(s1); memset(ch,0,sizeof(ch)); for(int i=0;i<lens1;++i) ch[i]=s1[i]; for(int i=0;i<lens1;++i) { if(ch[i]==s2[0]) { int tag=0; for(int j=1;j<lens2;++j) { if(ch[i+j]!=s2[j]) { tag=1; break; } } if(!tag) { for(int j=0;j<lens2;++j) ch[i+j]='