leetcode - Reverse Words in a String

Given an input string, reverse the string word by word.

For example,
Given s = "the sky is blue",
return "blue is sky the".

click to show clarification.

Clarification:

  • What constitutes a word?
    A sequence of non-space characters constitutes a word.
  • Could the input string contain leading or trailing spaces?
    Yes. However, your reversed string should not contain leading or trailing spaces.
  • How about multiple spaces between two words?
    Reduce them to a single space in the reversed string.
// 主要用到两个字符串,string t,res,扫描整个字符串,将单词copy to t.如果,遇到空格,将cache t字符串copy to res
// 重复上面的步骤,直到i = s.length,最后一步就是temp可能包含字符串,所以,再次copy to res.
// 时间复杂度 O(n)  空间复杂度 O(1). 这题已经AC.
class Solution {
public:
    void reverseWords(std::string &s) {
		std::string t = "",res = "";
		for(std::string::size_type i = 0; i < s.length(); i++)
		{
			if(s[i] == ' ')
			{
				res = t + (t == ""||res ==""?"":" ") + res;
				t = "";
			}
			else
			{
				t += s[i];
			}
		}
		s = t + (t == ""||res == ""?"":" ") + res;
		std::cout << s << std::endl;
	}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值