为什么代码28行的读入用 getline(cin, target); getline(cin, pattern);会WA?虽然输入的字符串中只包含字母,但用整行读入也不应该WA吧?
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
string pattern, target;
vector <int> next_;
void func()
{
next_.push_back(0);
for (int i = 1, len = 0; i < pattern.size(); i ++)
{
while (len > 0 && pattern[i] != pattern[len])
len = next_[len - 1];
if (pattern[i] == pattern[len])
len ++;
next_.push_back(len);
}
}
int main()
{
cin >> target >> pattern;
// 在target串中寻找与pattern相同的子串
func();
for (int i = 0, len = 0; i < target.size(); i ++)
{
while (len > 0 && target[i] != pattern[len])
len = next_[len - 1];
if (target[i] == pattern[len])
len ++;
if (len == pattern.size())
{
cout << i - len + 2 << endl;
len = next_[len - 1];
}
}
for (int i = 0; i < next_.size(); i ++)
{
if (i)
cout << " ";
cout << next_[i];
}
cout << endl;
return 0;
}