用getline(cin, string)为什么会WA
查看原帖
用getline(cin, string)为什么会WA
816549
52wyd楼主2023/3/7 17:12

为什么代码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;
}





2023/3/7 17:12
加载中...