题意
输入一个英文句子,例如:“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;
}