Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
1:特殊情况;2:反转整个字符串;3:删除字符串前和后的所有空格,并且单词之间只保留一个字符;4:找到单词反转单词
void reverseWords(string &s)
{
if(s[0] == '\0')
{
return;
}
int size = (int)s.length();
reverseWord(s, 0, size-1);
deleteSpace(s);
if(s[0] == '\0')
{
return;
}
int start = 0;
int end = 0;
while(s[end] != '\0')
{
while(s[end] != '\0' && s[end] != ' ')
{
end++;
}
end--;
reverseWord(s, start, end);
end++;
if(s[end] == '\0')
{
break;
}
start = ++end;
}
return;
}
void deleteSpace(string &s)
{
int start = 0;
string temp = "";
for(; s[start] != '\0'; start++)
{
if(s[start] != ' ')
{
temp.push_back(s[start]);
}
else
{
if(temp.size() != 0 && temp.back() != ' ')
{
temp.push_back(s[start]);
}
}
}
if(temp.size() != 0)
{
int size = (int)temp.size() - 1;
if(temp[size] == ' ')
{
temp.pop_back();
}
}
s = temp;
}
void reverseWord(string &s, int start, int end)
{
while(start < end)
{
swap(s[start++],s[end--]);
}
}