fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <set>
  4. #include <string>
  5. #include <vector>
  6.  
  7. std::set<std::string>
  8. retrieve_unique_rotations(std::string s)
  9. {
  10. std::set<std::string> res;
  11.  
  12. res.insert(s);
  13. if (s.empty()) {
  14. return res;
  15. }
  16. for (std::size_t i = 0, size = s.size() - 1; i != size; ++i) {
  17. std::rotate(s.begin(), s.begin() + 1, s.end());
  18. res.insert(s);
  19. }
  20. return res;
  21. }
  22.  
  23. int main()
  24. {
  25. for (const auto& s : retrieve_unique_rotations("abcd")) {
  26. std::cout << s << std::endl;
  27. }
  28. std::cout << std::endl;
  29. for (const auto& s : retrieve_unique_rotations("baba")) {
  30. std::cout << s << std::endl;
  31. }
  32.  
  33. }
  34.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
abcd
bcda
cdab
dabc

abab
baba