diff --git a/strings/brute_force_string_searching.cpp b/strings/brute_force_string_searching.cpp new file mode 100644 index 000000000..3288b36b0 --- /dev/null +++ b/strings/brute_force_string_searching.cpp @@ -0,0 +1,52 @@ +#include +#include +#include + +using std::string; + +int brute_force(string text, string pattern); +std::vector> test_set = { + // {text, pattern, expected output} + {"a", "aa", "-1"}, + {"a", "a", "0"}, + {"ba", "b", "0"}, + {"bba", "bb", "0"}, + {"bbca", "c", "2"}, + {"ab", "b", "1"} +}; + +int main() { + for (size_t i = 0 ; i < test_set.size(); i++) { + int output = brute_force(test_set[i][0], test_set[i][1]); + if (std::to_string(output) == test_set[i][2]) + std::cout << "success\n"; + else + std::cout << "failure\n"; + } + return 0; +} + +/* + *@description Find a pattern in a string by comparing the pattern + * to every substring. + *@param text Any string that might contain the pattern. + *@param pattern String that we are searching for. + *@return Index where the pattern starts in the text or + * -1 if the pattern was not found. + */ + +int brute_force(string text, string pattern) { + size_t pat_l = pattern.length(); + size_t txt_l = text.length(); + int index = -1; + if (pat_l <= txt_l) { + for (size_t i = 0; i < txt_l-pat_l+1; i++) { + string s = text.substr(i, pat_l); + if (s == pattern) { + index = i; + break; + } + } + } + return index; +}