fork download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5.  
  6. int findOptimal(string &s) {
  7. s += '0'; // add a sentinel 0
  8. int best_zero = -1;
  9. int prev_zero = -1;
  10. int zeros_in_interval = 0;
  11. int start = 0;
  12. int best_answer = -1;
  13. for(int i = 0; i < (int)s.length(); ++i) {
  14. if(s[i] == '1') continue;
  15. else if(s[i] == '0' and zeros_in_interval == 0) {
  16. zeros_in_interval++;
  17. prev_zero = i;
  18. }
  19. else if(s[i] == '0' and zeros_in_interval == 1) {
  20. int curr_answer = i - start; // [start, i) only contains one 0
  21. cout << "tried this : [" << s.substr(start, i - start) << "]\n";
  22. if(curr_answer > best_answer) {
  23. best_answer = curr_answer;
  24. best_zero = prev_zero;
  25. }
  26. start = prev_zero + 1;
  27. prev_zero = i;
  28. }
  29. }
  30. cout << "Answer = " << best_zero << endl;
  31. return best_zero;
  32. }
  33. int main() {
  34. string input = "011101101001";
  35. findOptimal(input);
  36. return 0;
  37. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
tried this : [0111]
tried this : [111011]
tried this : [1101]
tried this : [10]
tried this : [01]
Answer = 4