1) 串的模式匹配:设s、t为两个字符串,判断t是否为s的子串。如果是,输出子串所在位置(第一个字符),否则输出-1。 2) 根据位置和长度,删除子串。使用顺序串用BF算法 的完整代码
时间: 2024-06-04 16:11:23 浏览: 124
好的,我会尽力回答您的问题。以下是我的答案:
1)串的模式匹配可以使用暴力匹配算法,也称为 BF(Brute Force)算法。该算法的思想是:从主串 S 的第一个字符开始,依次与模式串 P 的第一个字符、第二个字符……第 m 个字符比较,如果所有字符都匹配成功,则返回子串第一个字符在主串中的位置,否则向右移动一位,继续比较。
具体实现的代码如下:
int BF(string s, string t)
{
int slen = s.length(), tlen = t.length();
for(int i = 0; i <= slen - tlen; i++)
{
int j;
for(j = 0; j < tlen; j++)
if(s[i + j] != t[j]) break;
if(j == tlen) return i;
}
return -1;
}
其中,s 为主串,t 为模式串,返回值为子串在主串中的位置,如果不存在则返回 -1。
2)根据位置和长度删除子串,可以先用 substr() 函数找到要删除的子串,然后再用 erase() 函数删除子串,最后返回删除后的新串。具体实现代码如下:
string DeleteSubstr(string s, int pos, int len)
{
string sub = s.substr(pos, len);
s.erase(pos, len);
return s;
}
其中,s 为原串,pos 表示要删除的子串开始位置,len 表示要删除的子串长度。返回值为删除后的新串。
希望我的回答可以帮助到您,如果还有其他问题,请随时提出。
阅读全文