题意

输入一个英文句子,例如:“This is a Book.",可以看到句子是以“.”来作为结束符号的,并且单词之间以一个空格来分隔。接着再输入一个单词A,请找出首次在句子中出现的与A相同的单词,是句子中的第几个单词,若不存在,则输出该句子中单词字符的总个数。 例如对上句子而言,若输入单词“is”,则应输出:2 若输入单词“isa”,则应输出:11

输入格式

第一行为以‘.’结束的一个词组(仅由若干个单词组成,单词间由一空格隔开,除单词和最后的“.”以外,不含其它字符)
第二行是一个单词(不含空格)


输出格式

一个整数

样例输入

This is a Book.
Book

样例输出

4

题解

将字符串分割,并将位置也同时存入vector容器,(注意处理末尾'\0')

代码

#include <bits/stdc++.h>
using namespace std;
typedef pair<string,int> PSI; 

vector<PSI>v;   //前面存字符串,后面存位置
int sum, pos;
string s;

int main()
{
	getline(cin, s,'.');   //三个参数中第三个可以省略,第三个表示“碰到'.'就结束输入”
	 
	for(int i = 0; i < s.size(); i++)
	{
		pos++;
		string temp = "";
		while(s[i] != ' ' && s[i] != '\0')
		{
			temp += s[i];
			sum++,i++;	
		}
		v.push_back({temp,pos});  //c++11新特性
	}
		
	cin >> s;
	for(auto x : v)    //c++11新特性
		if(x.first == s) 
		{
			cout << x.second;
			return 0;
		} 
	
	cout << sum;
	
	return 0;
} 
上一篇 下一篇