ulvis.paste.net - pastebin

Paste Search Dynamic
Recent pastes
with/without Twin Words/Phrase
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. bool twin(string &s, string &t, unordered_set <char> &vowel) {
  5.     unordered_map <char, int> s1;
  6.     unordered_map <char, int> s2;
  7.  
  8.     for(int i = 0; i < s.size(); i++) {
  9.         if(vowel.find(s[i]) == vowel.end()) s1[s[i]]++;
  10.     }
  11.  
  12.     for(int i = 0; i < t.size(); i++) {
  13.         if(vowel.find(t[i]) == vowel.end()) s2[t[i]]++;
  14.     }
  15.  
  16.     if (s1.size() != s2.size()) return false;
  17.  
  18.     int c1 = 0, c2 = 0;
  19.  
  20.     for (auto i = s1.begin(); i != s1.end(); i++) {
  21.         c1 += i->second;
  22.     }
  23.  
  24.     for (auto i = s2.begin(); i != s2.end(); i++) {
  25.         c2 += i->second;
  26.     }
  27.  
  28.     return (c1 == c2)? true : false;
  29. }
  30.  
  31. int main() {
  32.     unordered_set <char> vowel;
  33.  
  34.     vowel.insert('a');
  35.     vowel.insert('e');
  36.     vowel.insert('i');
  37.     vowel.insert('o');
  38.     vowel.insert('u');
  39.  
  40.     string s, t;
  41.     getline(cin, s);
  42.     getline(cin, t);
  43.  
  44.     transform(s.begin(), s.end(), s.begin(), ::tolower);
  45.     transform(t.begin(), t.end(), t.begin(), ::tolower);
  46.  
  47.     vector <string> s1;
  48.     vector <string> s2;
  49.     unordered_set <string> sol;
  50.     bool flag = true;
  51.  
  52.     for (int i = 0; i < s.size();) {
  53.         string x = "";
  54.         while(s[i] && s[i] != ' ') {
  55.             x += s[i++];
  56.         }
  57.         i++;
  58.         s1.push_back(x);
  59.     }
  60.  
  61.     for (int i = 0; i < t.size();) {
  62.         string x = "";
  63.         while(t[i] && t[i] != ' ') {
  64.             x += t[i++];
  65.         }
  66.         i++;
  67.         s2.push_back(x);
  68.     }
  69.  
  70.     for (int i = 0; i < s1.size(); i++) {
  71.         for (int j = 0; j < s2.size(); j++) {
  72.             if (twin(s1[i], s2[j], vowel)) {
  73.                 if (sol.find(s1[i]) == sol.end()) sol.insert(s1[i]);
  74.                 if (sol.find(s2[j]) == sol.end()) sol.insert(s2[j]);
  75.             }
  76.         }
  77.     }
  78.  
  79.     for (int i = 0; i < s1.size(); i++) {
  80.         if(sol.find(s1[i]) == sol.end()) {
  81.             flag = false;
  82.             break;
  83.         }
  84.     }
  85.  
  86.     if (flag) {
  87.         for (int i = 0; i < s2.size(); i++) {
  88.             if(sol.find(s2[i]) == sol.end()) {
  89.                 flag = false;
  90.                 break;
  91.             }
  92.         }
  93.     }
  94.  
  95.     if (flag) cout << "Twin Words/Phrases" << endl;
  96.     else cout << "Not Twin Words/Phrases" << endl;
  97.  
  98.     return 0;
  99. }
  100.  
Parsed in 0.019 seconds