Advertisement
markyrocks

fb help2

Apr 21st, 2022
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include<vector>
  2.  
  3. bool valid(string i, string s) {
  4.     if (s.size() == 0 || i.size() == 0) {
  5.         cout << "string cannot be empty\n";
  6.         return false;
  7.     }
  8.     if (s.size() > i.size()) {
  9.         cout << "search string > input string\n";
  10.         return false;
  11.     }
  12.     for (auto& l : i) {
  13.         if (l < 97 || l> 122) {
  14.             cout << "bad input string\n";
  15.             return false;
  16.         }
  17.     }
  18.     for (auto& l : s) {
  19.         if ((l < 97 || l> 122) && l!=63) {
  20.             cout << "bad search string\n";
  21.             return false;
  22.         }
  23.     }
  24.     return true;
  25. }
  26.  
  27. vector<pair<int, string>> searchWild(string i, string s) {
  28.     vector<pair<int, string>> vp{};
  29.     for (int j = 0; j < i.size(); j++) {
  30.         int k = j;
  31.         bool match = true;
  32.         for (auto& l : s) {
  33.             if (k < i.size() && l != i[k] && l != '?') {
  34.                 match = false;
  35.                 break;
  36.             }
  37.             else if (k == i.size()) {
  38.                 match = false;
  39.                 break;
  40.             }
  41.             k++;
  42.         }
  43.         if (match) {
  44.             vp.push_back(make_pair(k - s.size(), i.substr(k - s.size(), s.size())));
  45.         }
  46.  
  47.     }
  48.  
  49.     return vp;
  50.  
  51. }
  52.  
  53. int main() {
  54.  
  55.     string in{};
  56.     string search{};
  57.  
  58.     do {
  59.         cout << "enter input string\n";
  60.         cin >> in;
  61.         cout << "enter search string\n";
  62.         cin >> search;
  63.     } while (!valid(in, search));
  64.  
  65.     auto v = searchWild(in, search);
  66.    
  67.     for (auto& i : v) {
  68.         cout << "index = " << i.first << " string = " << i.second << '\n';
  69.     }
  70.  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement