Advertisement
FaresX

Untitled

Jan 9th, 2017
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <set>
  4.  
  5.  
  6. void substringDeletion(std::string& mainString, const std::string& targetString, unsigned short& opers)
  7. {
  8.     const unsigned char startFromPos = 0;
  9.     std::string::size_type firstPos = mainString.find(targetString, startFromPos);
  10.  
  11.     while (firstPos != std::string::npos)
  12.     {
  13.         opers++;
  14.         mainString.erase(firstPos, targetString.length());
  15.         firstPos = mainString.find(targetString, startFromPos);
  16.     }
  17. }
  18.  
  19.  
  20. int main()
  21. {
  22.     std::string S;
  23.     std::cin >> S;
  24.  
  25.     std::set<std::string> uniqueDuplicates;
  26.     unsigned short operations = 0;
  27.  
  28.     for (unsigned short i = 0; i < S.length(); ++i)
  29.     {
  30.         const unsigned short sdLength = 2;
  31.         std::string tmpSpecialDuplicate(sdLength, S[i]);
  32.         uniqueDuplicates.insert(tmpSpecialDuplicate);
  33.     }
  34.  
  35.     const std::vector<std::string> specialDuplicates(uniqueDuplicates.begin(), uniqueDuplicates.end());
  36.     const unsigned char sdVectorSize = specialDuplicates.size();
  37.  
  38.     for (unsigned char sdIndex = 0; sdIndex < sdVectorSize; ++sdIndex)
  39.      for (unsigned char sdIndex = 0; sdIndex < sdVectorSize; ++sdIndex)
  40.         substringDeletion(S, specialDuplicates[sdIndex], operations);
  41.  
  42.     std::cout << (!S.empty() ? S : "Empty String") << std::endl;
  43.     std::cout << operations << " operations" << std::endl;
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement