给定一个字符串,逐个翻转字符串中的每个单词。 说明
思路就是把单词提取出来先存入vector里,然后再从后往前一个一个取出来。 分离单词就按照空格来分离: 遍历字符串 如果不是空格,把这个字符加到一个string上。比如命名为temp。 如果是空格,看temp是否为空,如果不空,把temp放到vector 里,然后把temp清零。
这两部是主要的思路,遍历完成之后,再检查一下temp是否为空(最后一个单词之后可能没有空格),如果不空,把temp再放入vector中。 注意几种特殊情况:
string reverseWords(string &s) {
if(s.size()==0)
return string();
string temp; //存放单词的string
vector<string> strings;
string res;
for(auto ss:s)
{
if(ss!=' ') //当前不是空格,就加进去
{
temp+=ss;
}
else if(temp.size()!=0) //就是遇到空格了,遇到空格就检查temp里是否有东西
{
strings.push_back(temp);
temp=string();
}
}
if(temp.size()!=0) //最后一个单词之后如果没有空格,temp里就存的最后一个单词
{
strings.push_back(temp);
}
if(strings.size()==0) //如果全部是空格,那么strings应该为空
return string();
else //从后往前把vector里面的单词拿出来。
{
for(auto end=strings.end()-1;end>strings.begin();end--)
{
res+=(*end+' ');
}
res+=*strings.begin();
return res;
}
// write your code here
}