请教一个查找字符串的程序。
请编写一个函数int find(char s[],char t[]),该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值);否则返回-1.注意:用数组方式及两重循环来实现该函数. 问题点数:20、回复次数:9Top
1 楼ycom__net(一恒)回复于 2005-04-02 22:38:23 得分 0
直接查找或KMPTop
2 楼ewayne(...)回复于 2005-04-02 22:41:32 得分 1
循环,逐个字符匹配,如遇不匹配就重新开始匹配!Top
3 楼nasi00(莫傲·逍遥)回复于 2005-04-02 22:53:28 得分 1
库里面有这个函数阿,是strstr()Top
4 楼ybt631(默默耕耘!)回复于 2005-04-02 23:20:12 得分 1
就是字符串的匹配问题
如果字符串中重复的比较多,用kMP
其他的用经典匹配算法就可以了Top
5 楼bing_huo(我是一个演员!)回复于 2005-04-02 23:39:36 得分 4
std::string str;
std::string str2;
size_t pos = str.find(str2);
if (pos != std::string::npos)
{
//找到
}
else
{
//找不到。。。。。
}
str.find(str2);
哈哈。。。Top
6 楼du51(郁郁思扬)回复于 2005-04-03 00:11:45 得分 5
#include<iostream>
using namespace std;
int find(char s[],char t[])
{
int len1=strlen(s),len2=strlen(t),i=0,j=0,k;
if(len1<len2)return -1;
while(i<=len1-len2)
{
k=i+1;
if(s[i]-t[j])i++;
else
{
while(1)
{
if(s[i++]-t[j++]){j=0;i=k;break;}
if(j==len2)return i-len2;
}
}
}
return -1;
}
int main()
{
char s[]="Hello C++ Jav Hello Java";
char t[]="Java";
cout<<find(s,t)<<endl;
system("PAUSE");
return 0;
}
Top
7 楼ycom__net(一恒)回复于 2005-04-03 00:39:12 得分 4
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
int comp (char *str1, char *str2)
{
if(!strcmp(str1,str2))
return 1;
else return 0;
}
void find (char *s,char *t)
{
int i=0,j=0,len=0,len1=0;
int vec[10];
memset(vec, 0, sizeof(vec));
len=strlen(s);
len1=strlen(t);
char *tmp=new char (len+1);
for(i=0,j=0; i<len1; i++ )
{
strncpy(tmp, t+i, len);
*(tmp+len)='\0';
printf("%s\n",tmp);
if(comp(s, tmp))
{
vec[j]=i+1;
i+=(len-1);
j++;
}
}
for(i=0; i<10; i++)
printf("%d ",vec[i]);
}
int main()
{
char str1[10],str2[100];
gets(str1);
gets(str2);
find(str1, str2);
system("PAUSE");
}
Top
8 楼aniude(重返荣耀)回复于 2005-04-03 00:44:55 得分 3
#include <stdio.h>
#define N 10
int find(char a[],b[])
{
int j=0;
while(*a++!=*b++ && *a!='\n'){j++;}
return j;
}
void main()
{
char a[N]={abcde},b[N]={cd};
int i;
i=find(a,b);
printf("%d",i);
}Top
9 楼ycom__net(一恒)回复于 2005-04-03 00:51:47 得分 1
aniude(阿牛的乜乜)
如果匹配的不知一处, 那i就不是一个值了Top




