Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<vector>
- bool valid(string i, string s) {
- if (s.size() == 0 || i.size() == 0) {
- cout << "string cannot be empty\n";
- return false;
- }
- if (s.size() > i.size()) {
- cout << "search string > input string\n";
- return false;
- }
- for (auto& l : i) {
- if (l < 97 || l> 122) {
- cout << "bad input string\n";
- return false;
- }
- }
- for (auto& l : s) {
- if ((l < 97 || l> 122) && l!=63) {
- cout << "bad search string\n";
- return false;
- }
- }
- return true;
- }
- vector<pair<int, string>> searchWild(string i, string s) {
- vector<pair<int, string>> vp{};
- for (int j = 0; j < i.size(); j++) {
- int k = j;
- bool match = true;
- for (auto& l : s) {
- if (k < i.size() && l != i[k] && l != '?') {
- match = false;
- break;
- }
- else if (k == i.size()) {
- match = false;
- break;
- }
- k++;
- }
- if (match) {
- vp.push_back(make_pair(k - s.size(), i.substr(k - s.size(), s.size())));
- }
- }
- return vp;
- }
- int main() {
- string in{};
- string search{};
- do {
- cout << "enter input string\n";
- cin >> in;
- cout << "enter search string\n";
- cin >> search;
- } while (!valid(in, search));
- auto v = searchWild(in, search);
- for (auto& i : v) {
- cout << "index = " << i.first << " string = " << i.second << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement