为什么我的暴力字符串匹配算法不显示输出?
Why isn't my brute-force string match algorithm display an output?
这里是bfSM算法的源代码。该程序应显示找到与模式完全匹配的部分的起始索引,如果给定文本中没有匹配项,则显示 -1。我尝试包括我迄今为止在编程时使用的所有库,但是当我调试程序时,除了“(进程 15936)以代码 0 退出”之外,控制台上没有显示任何内容。我不确定我到底错过了什么,希望能得到一些帮助。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
#include<stdio.h>
#include<string.h>
using namespace std;
int bruteForceSM(string p, string t) {
for (int i = 0; i < (t.size() - p.size()); i++) {
int j = 0;
while(j < p.size() && p[j] == t[i + j]) { j++; }
if (j == p.size()) { return i; }
}
return -1;
}
int main(){
string text = "sally sells seashells by the seashore";
string pattern = "shell";
bruteForceSM(pattern, text);
return 0;
}
你从不打印结果,这就是你看不到任何结果的原因。
在主函数中,替换
bruteForceSM(pattern, text);
和
cout << "Index at which pattern is found: " << bruteForceSM(pattern, text) << endl;
这将打印
Index at which pattern is found: 15
作为附加的一般建议:永远不要使用 using namespace std;
(有关原因的更多信息,请参阅 Why is "using namespace std;" considered bad practice?)。
这里是bfSM算法的源代码。该程序应显示找到与模式完全匹配的部分的起始索引,如果给定文本中没有匹配项,则显示 -1。我尝试包括我迄今为止在编程时使用的所有库,但是当我调试程序时,除了“(进程 15936)以代码 0 退出”之外,控制台上没有显示任何内容。我不确定我到底错过了什么,希望能得到一些帮助。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
#include<stdio.h>
#include<string.h>
using namespace std;
int bruteForceSM(string p, string t) {
for (int i = 0; i < (t.size() - p.size()); i++) {
int j = 0;
while(j < p.size() && p[j] == t[i + j]) { j++; }
if (j == p.size()) { return i; }
}
return -1;
}
int main(){
string text = "sally sells seashells by the seashore";
string pattern = "shell";
bruteForceSM(pattern, text);
return 0;
}
你从不打印结果,这就是你看不到任何结果的原因。 在主函数中,替换
bruteForceSM(pattern, text);
和
cout << "Index at which pattern is found: " << bruteForceSM(pattern, text) << endl;
这将打印
Index at which pattern is found: 15
作为附加的一般建议:永远不要使用 using namespace std;
(有关原因的更多信息,请参阅 Why is "using namespace std;" considered bad practice?)。