fork download
  1. #include <bits/stdc++.h>
  2. #include <map>
  3. using namespace std;
  4.  
  5. bool check(string &str, int k) {
  6. map<string, int> mp;
  7. int p = 31, mod = 1e9;
  8. string curr = "";
  9.  
  10. for (int i = 0; i < k; ++i) {
  11. curr.push_back(str[i]);
  12. }
  13. mp[curr] = 1;
  14.  
  15. for (int i = k; i < str.size(); ++i) {
  16. curr.erase(0, 1);
  17. curr.push_back(str[i]);
  18. mp[curr] += 1;
  19. if (mp[curr] >= 2)
  20. return true;
  21. }
  22. return false;
  23. }
  24.  
  25. int binarySearch(string &str) {
  26. int left = 2, right = str.size() - 1, ans = -1;
  27. while (left <= right) {
  28. int middle = left + (right - left) / 2;
  29. if (check(str, middle)) {
  30. ans = middle;
  31. left = middle + 1;
  32. }
  33. else
  34. right = middle - 1;
  35. }
  36. return ans;
  37. }
  38.  
  39. int TensorflightSWEInternshipTask2(string str) {
  40. return binarySearch(str);
  41. }
  42.  
  43. int main(void) {
  44. string test = "aabaaba";
  45. cout << TensorflightSWEInternshipTask2(test);
  46. return 0;
  47.  
  48. }
Success #stdin #stdout 0.01s 5476KB
stdin
Standard input is empty
stdout
4