1012. 我是第几个单词(加强版、中间可多空格)
问题描述
给定一个英文句子,以.作为结束标志,句子中只包含由若干大小写字母组成的单词,单词之间用一个空格分隔,不包含其他字符。
再给定一个单词A,请在句子中查找:
- 如果单词
A首次出现在句子中,输出它是句子中的第几个单词(从 1 开始计数); - 如果单词
A不存在于句子中,则输出句子中所有单词字符的总个数(不包括空格和句号)。
输入格式
- 第一行:一个英文句子,以
.结束- 只包含大小写字母和空格
- 单词之间恰好一个空格
- 句子长度 ≤ 800
- 单个单词长度 ≤ 90
- 第二行:一个单词(不含空格,长度 ≤ 90)
输出格式
- 输出一个整数,表示结果。
样例
样例 1
输入
This is a Book. Book输出
4样例 2
输入
This is a Book. isa输出
11#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;// 严格要求 (将long long 类型取别名为ll)string a[100010];ll len=0;voidfunc(string s){s=" "+s+" ";ll l=0,r=0,d=s.size()-1;//下标变化for(ll i=1;i<=d-1;i++){if(s[i-1]==' '&&s[i]!=' '){l=i;}if((s[i+1]==' '||s[i+1]=='.')&&(s[i]!=' '&&s[i]!='.')){r=i;string s2="";for(ll j=l;j<=r;j++){s2+=s[j];}a[++len]=s2;}}}intmain(){ios::sync_with_stdio(0);// 提高cin、cout的运行速度cin.tie(0);cout.tie(0);ll sum=0;string s,s1;getline(cin,s);cin>>s1;func(s);for(ll i=1;i<=len;i++){if(a[i]==s1){cout<<i<<endl;return0;}sum+=a[i].size();}cout<<sum<<endl;return0;}