題意
輸入一個英文句子,例如:“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;
}