兄弟姐妹们
为什么5个点全部WA
明明样例还是能过的QAQ
是不是输入的问题? 本蒟蒻不是很能看得懂题解大佬们有关要输入两个getline的解释
#include<iostream>
#include<string>
using namespace std;
string a,b;
bool isLetter(char s){//判断是否是字母
if(s>='a'&&s<='z'||s>='A'&&s<='Z') return true;
return false;
}
char toUpper(char s){
if(s>='a'&&s<='z') return s+'A'-'a';
else return s;
}
char solve(char s,int t){//翻译翻译
if(s+t>'Z') return s+t-26;
if(s+t<'A') return s+t+26;
return s+t;
}
int letterCount[1000];
string result="";//result存结果
int main(){
for(int i=int('A');i<=int('Z');i++) letterCount[i]=0;
string s;
while(getline(cin,s)){//每次读入一行
if(s=="START"||s=="END") continue;
if(s=="ENDOFINPUT") break;
for(int i=0;i<s.length();i++){//统计字母出现的次数
if(isLetter(s[i])){
s[i]=toUpper(s[i]);
letterCount[int(s[i])]++;
}
}
result.append(s);//将每一句话存入result
}
int max=-1;
int maxLetter;
for(int i='A';i<='Z';i++){//计算最多的字母
if(letterCount[i]>max){
max=letterCount[i];
maxLetter=i;
}
}
int t='E'-maxLetter;//计算偏移量
for(int i=0;i<result.length();i++){
if(isLetter(result[i])) result[i]=solve(result[i],t);//将所有字母根据偏移量进行翻译
}
cout<<result<<endl;
return 0;
}