字符串处理: 猴子打字

浙大动物园最近雇佣了很多程序猿,动物园的管理者希望将这些猿猴们培养成未来的诺贝尔奖、图灵奖和菲尔兹奖获得者。为此,动物园针对猿猴们展开了一项专项训练:撰写文章。

在最近的一次练习中,这些猿猴们在键盘上胡乱地敲出了一些长度均不超过 5000 的字符串,其中的每个字符都是从空格、半角标点符号、数字、英文大小写等 95 个可打印字符中等概率随机敲出的。

管理员认为,如果在字符串中出现了 “Nature & Science” 这个子串(不含引号,大小写敏感),则猿猴们已经达到了训练目标,他们会将首个 “Nature & Science” 之前的全部内容当作文章发表出去,供世人瞻仰。

输入格式

一个整数 T,表示有多少组测试数据。

接下来的 T 行,每行有一个字符串。注意字符串内可能含有空格,因此建议使用 getchar() 或其他类似的方式进行读入。

输出格式

对于每组测试数据,如果猴子们能够发表文章,则输出一行字符串,表示文章中的内容,否则什么也不做。

样例输入

4
)#>alV.RIqq;ik3&[<>$
Hello, Nature & Science: World
Nature & Science: Hello, World
The Cake is a Lie. Nature & Science.

样例输出

Hello, 

The Cake is a Lie. 

提示

第一组数据中没有出现 “Nature & Science”,所以没有任何输出。

剩下几组数据中出现了 “Nature & Science”,但第三组数据的 “Nature & Science” 之前没有字符,因此输出了一个空行。

另外,为了说明输出方式,部分样例数据是由动物园管理员构造的,但我们保证实际测试数据全部都是猿猴们撰写出来的文章,严格符合题目描述中所保证的条件。


#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int main(){
	int T;
	string str;
	cin >> T;
	getchar();
	while (T--){
		getline(cin, str);
		int pos = str.find("Nature & Science");
		if (pos >= 0){
			for (int i = 0; i < pos; i++){
				printf("%c", str[i]);
			}
			printf("\n");
		}
	}
	return 0;
}




#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int main() {
	int T;
	string str;
	scanf("%d", &T);
	getchar();
	while (T--){
		getline(cin, str);
		int pos = str.find("Nature & Science");
		if (pos == 0) printf("\n");
		if (pos > 0 && pos < 5010){
			str = str.substr(0, pos);
			printf("%s\n", str.c_str());
			//cout << str << endl;
		}
	}
	return 0;
}



你可能感兴趣的:(字符串处理: 猴子打字)