思路:
从字符串最后往前遍历,将 alpha 入栈,跳过非 alpha。
题目描述
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
Example:
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int main()
{
vector<char> word;
char str[10000];
cin.getline(str, 10000);
bool first = true;
int i = strlen(str)-1;
while(i >= 0) {
while(i >= 0 && isalpha(str[i])) {
word.push_back(str[i]);
--i;
}
while(i >= 0 && !isalpha(str[i])) {
--i;
}
if(word.size() > 0) {
if(first) first = false;
else cout << ' ';
}
while(word.size() > 0) {
char ch = word.back();
word.pop_back();
cout << ch;
}
}
}