题意:
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
然后将字符串进行就地逆置,将字符串的各个单词进行就地逆置。
class Solution {
public:
void delete_kong(string &s)
{
int i = 0;
int len = s.length();
int index = 0;
for(i = 0;i<len;i++)
{
if(s[i] == ' ')
continue;
else
break;
}
int j = i;
for(j = i;j<len;j++)
{
if(s[j] == ' ' && j+1<len && s[j+1] == ' ')
{
continue;
}
else
{
s[index] = s[j];
index++;
}
}
if(s[index-1] == ' ')
index--;
s = s.substr(0,index);
}
void reverse(string &s,int start,int end)
{
int i = 0;
int mid = (end-start)/2;
for(i = 0;i<=mid;i++)
{
char temp = s[start+i];
s[start+i]= s[end-i];
s[end-i] = temp;
}
}
void reverseWords(string &s) {
int i = 0;
if(s == " " || s== "")
s = "";
delete_kong(s);
int len = s.length();
int start = 0;
int end = len-1;
reverse(s,start,end);
//cout<<s<<endl;
for(i = 0;i<len;i++)
{
if(s[i] == ' ')
{
if((i-1)>=0)
{
end = i-1;
reverse(s,start,end);
start = i+1;
end = i+1;
}
}
}
end = len-1;
reverse(s,start,end);
}
};