串查找
在一个串中查找满足条件的某个子串,要求查找所有满足条件的子串,并打印位置。
以下:
#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct{
char data[255];
int len;
}String;
void StrAssign(String *S,String *T,int sum[])
{ //生成串,并比较
int i=0,j=0,k=0;
while (i<= S->len )
{
if(j == T->len)
{
sum[k] = (i-j+1);
j = 0;
k++;
}
if(S->data[i] == T->data[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
}
int sum[255] = {0};
int main(){
String T,S;
int i=0,k=0,q = 0;
T.len = S.len = 0;
cout<<"输入主串,以#结束:"<<endl;
cin>>S.data[0];
while(S.data[i] != '#'){
cin>>S.data[i+1];
++i;
++S.len;
}
cout<<"输入子串,以#结束:"<<endl;
cin>>T.data[0];
while(T.data[k] != '#'){
cin>>T.data[k+1];
++k;
++T.len;
}
StrAssign(&S,&T,sum);
cout<<"子串的位置分别为:"<<endl;
while(sum[q] != 0){
cout<<sum[q]<<"\t";
q++;
}
return 0;
}