给定一个字符串,逐个翻转字符串中的每个单词。
示例 1:
输入: "the sky is blue
" 输出: "blue is sky the
"
示例 2:
输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
说明:
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
C++
class Solution {
public:
string reverseWords(string s)
{
string res;
string tmp;
vector<string> vec;
int n=s.size();
for(int i=0;i<n;i++)
{
if(s[i]!=' ')
{
tmp+=s[i];
}
else
{
if(tmp.size())
{
vec.push_back(tmp);
tmp="";
}
}
}
if(tmp.size())
{
vec.push_back(tmp);
tmp="";
}
reverse(vec.begin(),vec.end());
int m=vec.size();
if(0==m)
{
return res;
}
res+=vec[0];
for(int i=1;i<m;i++)
{
res+=' ';
res+=vec[i];
}
return res;
}
};