java版:
public String reverseWord(String s) {
StringBuilder result_str = new StringBuilder();
if(s.length()==0)//s="";
{
return new String("");
}
for (int i = s.length() - 1; i >= 0;) {
while (i >= 0 && s.charAt(i) == ' ') {
i--;
}
if (i < 0) {
break;
}
StringBuilder str = new StringBuilder();
while (i >= 0 && s.charAt(i) != ' ') {
str.append(s.charAt(i--));
}
str.reverse();
str = str.append(" ");
result_str.append(str);
}
if(result_str.length()==0)//s=" ";
{
return new String("");
}
return new String(result_str.deleteCharAt(result_str.length()-1));
//return new String(result_str);
}
C++版:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
class Solution
{
public:
void ReverseWord(string &s)
{
string ans;
cout<<"s="<<s<<endl;
for(int i=s.length()-1; i>=0; )
{
while(i>=0&&s[i]==' ')
i--;
string temp;
if(i<0)
break;
if(!ans.empty())
ans.push_back(' ');
while(i>=0&&s[i]!=' ')
{
temp.push_back(s[i--]);
}
reverse(temp.begin(),temp.end());///algorithm
ans.append(temp);
}
cout<<"ans="<<ans<<endl;
s=ans;
cout<<s<<"**"<<endl;
}
};
int main()
{
Solution *so=new Solution();
string s=" the sky is blue ";
so->ReverseWord(s);
cout<<s<<endl;
return 0;
}