i am a student -》 student a am i
方法
- 先翻转整个字符串
- 再对每个单词翻转
代码
class Solution {
public:
void Reverse(int begin,int end,string &str)
{
while(begin < end)
{
char temp = str[begin];
str[begin] = str[end];
str[end] = temp;
begin++;
end--;
}
}
string ReverseSentence(string str)
{
int len = str.length();
Reverse(0,len - 1,str);
int begin = 0;
int end = 0;
int i = 0;
while(i < len)
{
//把前面的空格都去掉
while(i < len && str[i] == ' ')
{
i++;
}
begin = end = i;
while(i < len && str[i] != ' ')
{
i++;
end++;
}
Reverse(begin,end - 1,str);
}
return str;
}
};
//----------------------------------------------------------
class Solution {
public:
string ReverseSentence(string str) {
string Fstr;
int n = (int)str.size();
if (n == 0) return Fstr;
int i = n - 1;int ret = 0;
int j = 0;
while (i) {
for (j = i; j >= 0; --j) {if (str[j] == ' ') break;}
if (j < 0) ret = 1;
else ret = j;
for(j = j+1; j <= i; j++) Fstr.push_back(str[j]);
i = ret - 1;
}
Fstr.push_back('\0');
return Fstr;
}
};
//----------------------------------------------------
class Solution {
public:
void ReverStr(int begin, int end, string& str) {
while (begin < end) {
char tem = str[begin];
str[begin] = str[end];
str[end] = tem;
}
}
string ReverseSentence(string str) {
int n = str.length();
ReverStr(0, n-1, str);
int i = 0;
int j = 0;
while (i < n)
{
if (str[i] == ' ') {
ReverStr(j, i, str);
j = i + 1;
}
i++;
}
return str;
}
};