现在的位置: 首页 > 综合 > 正文

Reverse Words in a String -LeetCode OJ

2017年10月11日 ⁄ 综合 ⁄ 共 1033字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.