P4【基础】我是第几个单词 题解


题意

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM