要求:
键盘输入母串s1与子串s2,删除s1中所有的子串s2。
#include
#include
void re(char str1[],char str2[])
{
int i,j,flag,n=0;
for(i=0;str1[i]!=0;i++)
{
flag=0;
for(j=0;str2[j]!=0;j++)
if(str1[i]==str2[j])
{
flag=1;
break;
}
if(!flag)
str1[n++]=str1[i];
}
str1[n]=0;
}
int main()
{
char str1[40],str2[40];
scanf("%s%s",str1,str2);
re(str1,str2);
puts(str1);
return 0;
}
我输入abc ,要求删除ab,结果是c 这个运行正常
但我要是输入aba 要求删除ab,按理说结果是就剩下一个a
但实际运行结果 是都删除了,求解
public static char[] deleteChildStr(char[] parent,char[] child){
int size = parent.length;
int sizeb = child.length;
int flag = 0;
char[] result = new char[size];
int index= 0;
for(int i = 0;i < size;i ++)
{
if(size-i < sizeb)
{
for(int m = i;m < size;m++)
{
result[index++] = parent[m];
}
break;
}
flag = 0;
for(int j = 0;j < sizeb;j++)
{
if(parent[i+j] == child[j])
{
continue;
}else{
flag = 1;
break;
}
}
if(flag == 1){
result[index++] = parent[i];
}else{
i +=(sizeb-1);
}
}
return result;
}
//兄弟我只能帮你到这了 我这win10 c环境搭了半天没出来 代码我测试我没问题
public static char[] deleteChildStr(char[] parent,char[] child){
int size = parent.length;
int sizeb = child.length;
int flag = 0;
char[] result = new char[size];
int index= 0;
for(int i = 0;i < size;i ++)
{
if(size-i < sizeb)
{
for(int m = i;m < size;m++)
{
result[index++] = parent[m];
}
break;
}
flag = 0;
for(int j = 0;j < sizeb;j++)
{
if(parent[i+j] == child[j])
{
continue;
}else{
flag = 1;
break;
}
}
if(flag == 1){
result[index++] = parent[i];
}else{
i +=(sizeb-1);
}
}
return result;
}