本文主要是介绍MT1508 查找子串1(BF算法实例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
输入1个字符串其中包含一个字符串“zichuan”,输出它在字符串的起止位置(从0开始)。
如果子串多次出现,查找第一次出现的位置。如果没有包含该子串,输出NULL。
输入格式:
输入1个字符串,长度为n(n<100000)
输出格式:
字符串的开始和结尾的位置
输入:
asdzichuanqewr
输出:
3 9
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;const string t = "zichuan";int BF(string s)
{int i=0,j=0;while(i<s.size() && j<t.size()){if(s[i]==t[j])i++,j++;elsei = i-j+1,j=0;}return (j>=t.size())? (i-t.size()):-1;
}int main()
{int l,r;string x;getline(cin,x);l = BF(x);if(l == -1){cout<<"NULL"<<endl; return 0;} else if(l>=0) {cout<<l<<" "<<l+6<<endl;} else {cout<<"0"<<6<<endl;}return 0;
}
这篇关于MT1508 查找子串1(BF算法实例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!