题解 | #单词倒排#
单词倒排
http://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
//对字符串中的所有单词进行倒排。说明:
//1、构成单词的字符只有26个大写或小写英文字母;
//2、非构成单词的字符均视为单词间隔符;
//3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
//4、每个单词最长20个字母;
using namespace std;
int main()
{
string str,ans,out0;
//getline(cin,str);
while(cin>>str)
{
// int len1 = str.length();
// for(int j=0;j<len1;j++)
// {
// if(!isalpha(str[j]))
// {
// str[j] = ' ';
// }
// }
ans = str+" "+ans;
//reverse(str.begin(),str.end());
int len = ans.length();
for(int i=0; i<len; i++)
{
if(isalpha(ans[i]))
{
ans[i] = ans[i];
}
else{
if(ans[i] != ' ' && i!= 0)
{
ans[i] = ' ';
}
}
// if(isalpha(ans[i]) || ans[i] == ' ')
// out0 = ans[i];
}
}
cout<<ans<<endl;
return 0;
}
//用例输入
//$bo*y gi!r#l
//预期输出
//l r gi y bo
//实际输出
//gi r l bo y