Vulkan

朴素模式匹配

#include <string>
#include <iostream>
using namespace std;
/***string下标:0,1,2,...***/
/***查找从s中pos位置开始,t在s中的位置,返回的结果为下标***/
int Index(string s,string t,int pos)
{
	int i=pos;
	int j=0;
	while(i<s.size()&&j<t.size())
	{
		if(s[i]==t[j])
		{
			++i;
			++j;
		}
		else
		{
			i=i-j+1;/***i退回到上次匹配的首位的下一位***//***假如下标从1开始,这里则为多少?(i=i-j+2)***/
			j=0;
		}

	}
	if (j==t.size())
		return i-t.size();
	else
		return 0;
}
int main()
{
	string s="abcdefghijk";
	string t="hi";
	int k=Index(s,t,2);
	cout<<k<<endl;
	return 0;
}


posted on 2012-10-13 11:44  Vulkan  阅读(129)  评论(0编辑  收藏  举报

导航