给定一个句子,翻转其中的单词 (单词之间由不确定的空格分隔)
如: I come from china => china from come I
基本思路:读入字符串,按照空格,单词依次读取进一个 单词表中,而后反向拼接单词表即可
注意点:空格可能包含多个,读取终止条件是,读取空格时遇到了字符,读取单词时遇到了空格,以及读取到末尾时
string ReverseSentence(string str) {
string res;
if(str.size()==0)
return res;
vector<string> words;//分割的单词表
bool flag=true;//当前划分出来的是单词还是空格
string one_word;
for(int i=0;i<str.size();i++)
{
if(flag==true) //正在读取单词
{
if(str[i]==char(32)) //读取到空格
{
words.push_back(one_word);
one_word.clear();//重新清理
flag=false;//开始读取空格
one_word+=str[i];
}
else
{
one_word+=str[i];
if(i==str.size()-1)
words.push_back(one_word);
}
}
else
{
if(str[i]!=char(32))
{
words.push_back(one_word);
one_word.clear();
flag=true;
one_word+=str[i];
}
else{
one_word+=str[i];
if(i==str.size()-1)
words.push_back(one_word);
}
}
}
//
for(int i=0;i<words.size();i++)
res+=words[words.size()-1-i];
return res;
}