朴素字符串匹配算法

#include <iostream>
#include <stdlib.h>
#include<string.h>
#define maxsize 40
#define ok 1
#define error 0
using namespace std;
typedef char String[maxsize+1];
int String_assign(String m,char *chars)
{
 int i;
 if(strlen(chars)>maxsize)
 {
  return error;
 }
 else
 {
  m[0]=strlen(chars);
  for(i=1;i<=m[0];i++)
  {
  m[i]=*(chars+i-1);
  }
 }
 return ok;
}
int index(String m,String n,int pos )
{
 int i=pos;
 int j=1;
 while(i<=m[0]&&j<=n[0])
 {
  if(m[i]==n[j])
  {
  i++;
  j++;
  }
  else
  {
  i=i-j+2;
  j=1;
  }
 }
 if(j>n[0])
 {
  return i-n[0];
 }
 else
 {
  return 0;
 }

}
int main()
{
 String t,s1,s2;
 int k;
 cout<<"please input first string:"<<endl;
 k=String_assign(s1,"abcdefg");
 if(!k)
 {
  cout<<"串长s1超过maxsize!"<<endl;
 }
 cout<<s1<<endl;
 cout<<"please input second string:"<<endl;
 k=String_assign(s2,"def");
 if(!k)
 {
  cout<<"串长s2超过maxsize!"<<endl;
 }
 cout<<s2<<endl;
 k=index(s1,s2,1);
 cout<<"the same character from start:"<<k<<endl;
 return 0;

}

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值