C++程序设计 在一个字符串数组中查找另一个字符串数组

2024-12-22 00:42:53
推荐回答(3个)
回答1:

int cmp(char *p,char *q)
{
int i,j,k,size,*pos=new int[strlen(p)];
bool nomat=true;

/*先找出首字符的匹配位置集*/
j=0;
for(i=0;p[i];i++)
{
if(p[i]==q[0])
{
nomat=false;
pos[j++]=i;
}
}

if(nomat)
return -1;
else if(strlen(q)==1)
return pos[0];
else
{
/*匹配剩余项*/
size=j;
j=0;
while(j {
i=pos[j++];
nomat=false;
for(i++,k=1;p[i]&&q[k];i++,k++)
if(p[i]!=q[k])
{
nomat=true;
break;
}
if(p[i]==NULL&&q[k]!=NULL)//如果p已匹配完而q没有
nomat=true;
else if(!nomat)
return pos[j-1];
}
}
delete []pos;
return -1;
}
希望对你有所帮助

回答2:

//两个方法。
int find (char s[], char t[])
{
int a=0,i=0;
char *p, *r;
while (*s!='\0')
{
p=s; r=t;
while (*r!='\0')
if (*p==*r)
{
p++;
r++;
}
else break;

if (*r=='\0')
{
a=i+1;
break;
}
s++;
i++;
}

if (a)
return a;
else
return -1;
}

int find(char s[],char t[])
{
char n=t[0];
int l;
l=strlen(t);
for(int i=0;s[i]!='\0';i++)
{
if(s[i]==n&&strncmp(s+i,t,l)==0) return i;
}
return -1;
}

回答3:

int find(char s[],char t[])
{
char n=t[0];
for(int i=0;s[i]!='\0';i++)
{
if(s[i]==n&&strcmp(s+i,t) return i;
}
return -1;
}