Reverse Words in a String -LeetCode OJ

来源:互联网 发布:access数据库修改库别 编辑:程序博客网 时间:2024/05/18 16:56

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



0 0
原创粉丝点击