fork(7) download
  1. #include<iostream>
  2. #include<string>
  3. #include<vector>
  4.  
  5. class Word
  6. {
  7. std::string word;
  8. std::string pattern;
  9. std::string buf;
  10. int size;
  11. public:
  12. std::vector <int> lookForPatterns();
  13. Word(std::string &w, std::string &p, int s);
  14. Word();
  15. ~Word();
  16. };
  17.  
  18.  
  19. std::vector <int> Word::lookForPatterns()
  20. {
  21. std::vector <int> results;
  22. buf.clear();
  23. int start = 0;
  24. if (pattern.empty() == true)
  25. {
  26. for(int i = 0; i<word.size();i++)
  27. results.push_back(i);
  28. }
  29. for (int i = 0; i <= word.size() - 1; i++)
  30. {
  31. if (buf.empty() == true)
  32. {
  33. start = i;
  34. }
  35. buf += word.at(i);
  36. for (int j = 0; j <= buf.size() - 1; j++)
  37. {
  38. if (buf.at(j) != pattern.at(j))
  39. {
  40. buf.clear();
  41. break;
  42. }
  43. else
  44. {
  45. if (buf.size() == pattern.size())
  46. {
  47. if (buf == pattern)
  48. {
  49. results.push_back(start);
  50. buf.clear();
  51. i = start;
  52. break;
  53. }
  54. else
  55. {
  56. buf.clear();
  57. break;
  58. }
  59. }
  60. else
  61. break;
  62.  
  63. }
  64. }
  65. }
  66. return results;
  67. }
  68. Word::Word(std::string &w, std::string &p, int s)
  69. {
  70. word = w;
  71. pattern = p;
  72. size = s;
  73. }
  74. Word::Word()
  75. {
  76. }
  77.  
  78.  
  79. Word::~Word()
  80. {
  81. word.clear();
  82. pattern.clear();
  83. }
  84. int main()
  85. {
  86. std::vector<int> positions;
  87. std::string _word;
  88. std::string _pattern;
  89. int s;
  90. int n;
  91. std::cin >> n;
  92. for (int i = 0; i < n; i++)
  93. {
  94. std::cin >> s >> _pattern >> _word;
  95. Word p1(_word, _pattern, s);
  96. positions = p1.lookForPatterns();
  97. for (int i = 0; i < positions.size(); i++)
  98. {
  99. std::cout << positions[i] << std::endl;
  100. }
  101. positions.clear();
  102. }
  103. return 0;
  104. }
Success #stdin #stdout 0s 4564KB
stdin
4
2
na
banananobano
6
foobar
foo
9
foobarfoo
barfoobarfoobarfoobarfoobarfoo
3
aaa
aaaaaa
stdout
2
4
3
9
15
21
0
1
2
3