Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <set>
- void substringDeletion(std::string& mainString, const std::string& targetString, unsigned short& opers)
- {
- const unsigned char startFromPos = 0;
- std::string::size_type firstPos = mainString.find(targetString, startFromPos);
- while (firstPos != std::string::npos)
- {
- opers++;
- mainString.erase(firstPos, targetString.length());
- firstPos = mainString.find(targetString, startFromPos);
- }
- }
- int main()
- {
- std::string S;
- std::cin >> S;
- std::set<std::string> uniqueDuplicates;
- unsigned short operations = 0;
- for (unsigned short i = 0; i < S.length(); ++i)
- {
- const unsigned short sdLength = 2;
- std::string tmpSpecialDuplicate(sdLength, S[i]);
- uniqueDuplicates.insert(tmpSpecialDuplicate);
- }
- const std::vector<std::string> specialDuplicates(uniqueDuplicates.begin(), uniqueDuplicates.end());
- const unsigned char sdVectorSize = specialDuplicates.size();
- for (unsigned char sdIndex = 0; sdIndex < sdVectorSize; ++sdIndex)
- for (unsigned char sdIndex = 0; sdIndex < sdVectorSize; ++sdIndex)
- substringDeletion(S, specialDuplicates[sdIndex], operations);
- std::cout << (!S.empty() ? S : "Empty String") << std::endl;
- std::cout << operations << " operations" << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement