Reverse Words in a String -LeetCode OJ

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



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值