Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- int BMSearch(string str, string substr)
- {
- vector<int> arr;
- for (int i = 0; i <= str.size() - substr.size(); i++)
- {
- if (str[i] == substr[0])
- {
- arr.push_back(i);
- }
- }
- for (int i = 0; i < arr.size(); ++i)
- {
- int j = arr[i] + substr.size() - 1;
- int k = substr.size() - 1;
- while (k >= 0 && str[j] == substr[k])
- {
- j--;
- k--;
- }
- if (k == -1)
- {
- return arr[i];
- }
- }
- return -1;
- }
- int BFSearch(string str, string substr)
- {
- for (int i = 0; i < str.size() - substr.size(); ++i)
- {
- int j = i;
- int k = 0;
- while (k < substr.size())
- {
- if (str[j] != substr[k])
- {
- break;
- }
- j++;
- k++;
- }
- if (k == substr.size())
- {
- return i;
- }
- }
- return -1;
- }
- int main(void)
- {
- setlocale(LC_ALL, "Russian");
- string str, substr;
- cout << "Введите строку:" << endl;
- cin >> str;
- cout << "Введите подстроку:" << endl;
- cin >> substr;
- cout << "Поиск Бойера Мура: " << BMSearch(str, substr) << endl;
- cout << "Прямой поиск: " << BFSearch(str, substr) << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement