fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6.  
  7. bool hasRightPair(const string & longString, size_t pos)
  8. {
  9. int pairCounter=0;
  10. for (int i = pos;i< longString.size(); i++)
  11. {
  12. if (longString[i] == '[')
  13. pairCounter++;
  14. if (longString[i] == ']')
  15. pairCounter--;
  16. if (!pairCounter)
  17. return true;
  18. }
  19. return !pairCounter;
  20. }
  21.  
  22. bool hasLeftPair(const string & longString, size_t pos)
  23. {
  24. int pairCounter = 0;
  25. for (int i = pos ;i>=0 ; i--)
  26. {
  27. if (longString[i] == '[')
  28. pairCounter++;
  29. if (longString[i] == ']')
  30. pairCounter--;
  31. if (!pairCounter)
  32. return true;
  33. }
  34. return !pairCounter;
  35. }
  36.  
  37. void CompareFunc(const string & longString)
  38. {
  39. for (size_t i = 0; i < longString.size(); i++)
  40. {
  41. if (longString[i] == '[')
  42. {
  43. if (!hasRightPair(longString, i))
  44. cout << i <<" ";// << " ";
  45. }
  46. if (longString[i] == ']')
  47. {
  48. if (!hasLeftPair(longString, i))
  49. cout << i << " ";// << " ";
  50. }
  51. }
  52. cout << endl;
  53. }
  54.  
  55. int main()
  56. {
  57.  
  58. vector<string> example({
  59. "a[[[b]c",
  60. "a[[b]]c",
  61. "a[b]]]c",
  62. "abc[[ab]111",
  63. "[a][b]c]]][[c[c]["
  64. });
  65. for (string str : example)
  66. CompareFunc(str);
  67. return 0;
  68. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
1 2 

4 5 
3 
7 8 9 10 11 16