题目描述
分析:
这个题其实是LeetCode151翻转字符串的变形题
因为没在纸上写清楚条件,花了我很久,才找出了bug,说明我做题还是有点急躁,哎
这道题给我的启示是:不要上来就敲代码,先把一些关键步骤和整体框架在纸上写清楚
C++代码
/**
* @Author: Wilson79
* @Datetime: 2020年1月8日 星期三 20:12:21
* @Filename: 英文缩写词.cpp
*/
#include <iostream>
#include <cstring>
using namespace std;
int main() {
// ___PEOPLE’S_REPUBLIC___OF__CHINA
string s1;
while(getline(cin, s1)) {
int n = s1.size();
for (int i = 0, j = 0; i < n;) {
// 去除连续空格
while(j < n && ((s1[j] == '-') || (s1[j] == ' '))) j ++;
if (j == n) break;
i = j;
// 核心
{
while(j < n && ((s1[j] != '-') && (s1[j] != ' '))) j ++;
string s = s1.substr(i, j - i);
char t = s[0];
// 判断忽略的单词
for (int k = 0; k < s.size(); k ++) {
s[k] = tolower(s[k]);
}
if (s != "of" && s != "the" && s != "a" && s != "an" && s != "of" && s != "for" && s != "and") {
cout << t;
}
i = j;
}
}
cout << endl;
}
return 0;
}