题目链接
再次回顾了getline(cin,tmp)的用法,注意getline前面如果有cin或者scanf,要记得用getchar()来吸收换行。
测试点1可能形如!!HELLO,即最开始未必就是单词,因此需要先将i和j调整到第一个字母的位置。
#include<bits/stdc++.h>
using namespace std;
int main(){
map<char,vector<string> > mp;
for(int i=0;i<26;i++){
for(int j=0;j<7;j++){
string tmp;
cin >> tmp;
mp['A'+i].push_back(tmp);
}
}
string input;
getchar();
getline(cin,input);
input+="!";//保证可以统一处理
vector<string> words;
int i=0,j=0;
while(j<input.size() && !(input[j]>='A' && input[j]<='Z')){
j++;
}
i=j;
while(i<input.size() && j<input.size()){
if(input[j]>='A' && input[j]<='Z'){
j++;
}else{
words.push_back(input.substr(i,j-i));
while(j<input.size() && !(input[j]>='A' && input[j]<='Z')){
j++;
}
i=j;
}
}
int cnt=0;
for(string word:words){
cnt++;
for(int i=0;i<7;i++){
for(int j=0;j<word.size();j++){
cout << mp[word[j]][i];
if(j!=word.size()-1){
cout << " ";
}
}
cout << endl;
}
if(cnt!=words.size()){
cout << endl;
}
}
return 0;
}