您的位置:首页 > 其它

字符串匹配

2015-11-09 13:42 309 查看
//字符串的查找

//BF算法

#include<iostream>

#include<string>

using namespace std;

int index(const string& Tag, const string& Ptn, int pos)

{

int i = pos;

int j = 0;

int tlen = Tag.size();

int plen = Ptn.size();

while (i<tlen&&j<plen)

{

if (Ptn[j] == Tag[i])

{

i++;

j++;

}

else

{

i = i - j + 1;//如果不匹配,i回溯

j = 0;//j归0;

}

}

if (j >= plen)

return i - plen;

else

return -1;

}

//测试程序:

int main()

{

char ch;

do

{

string Tag;

string ptn;

int pos;

cout << "输入主串" << endl;

cin >> Tag;

cout <<"输入子串" << endl;

cin >> ptn;

cout << "输入主串开始的位置(首字符位置为0)" << endl;

cin >> pos;

int result = index(Tag, ptn, pos);

if (result != -1)

cout << "子串在主串的第" << result+1 << "个字符" << endl;

else

cout << " 无匹配字符串" << endl;

cout << " 是否继续测试" << ":Y or y,任意键结束" << endl;

cin >> ch;

} while (ch=='y'||ch=='Y');

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: