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; }