字符串收索

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:16:23
内容:查找匹配的字符串

要求:

⑴程序要求运行后接收用户输入的一个句子,以及一个关键字,然后在句子中收索是否包函该关键字。如果句子中不包含该关键字则显示“No Match",如果句子中包含该关键字则显示“Match",且把该关键字在句子中的位置用十六进制数显示出来。

⑵要求程序执行过程的样式如下:

Enter Sentence: We are studying abc

Enter Keyword: abc

March at location: 11H of the Sentence

Enter Keyword: xyz

No match

Enter Keyword: ctrl+c;结束

还有:基本思路;流程图;编程实现;分析;总结。

这个问题是一个模式匹配的问题,如果要深入研究很复杂。但是不深入的话又很简单,我手写了一个简单的直接匹配的函数,根据输入的源句子和关键字,返回第一个关键字在句子中出现的位置。
输入输出的操作你就自己完成了吧。如果你想深入研究这类匹配的问题,可以去看一下KMP算法。
定位函数如下:
int index(string s, string t) //s为源句子,t为关键字
{
int i=0,j=0;
while(i<=s.length()&&j<=t.length())
{
if(s[i]==t[j])
{
++i;
++j; //继续匹配后续字符
}
else
{
i=i-j+2;
j=0; //匹配失败回溯,重新开始比较
}
}
if(j>t.length()) return i-t.length();
return 0;
}
纯手工制作,不保证调试成功……