day/代码随想录/力扣/

题目:

给你一个字符串 s ,请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
整体思路
1.先将整个字符串逆序,然后将每个单词逆序。‘hello world’->‘dlrow olleh’->‘world hello’
定义一个将字符串逆序的函数,传入整个字符串使其逆序,然年再分别传入每个单词使其逆序。
2.首先去除字符串首尾多余的空格,然后去除字符串内部多余的空格。

class Solution:
	def reverseWord(self,s:str):
		s = list(s)
		// 去除多余的space
		left,right = 0,len(s) - 1
		new_s = []
		while left <= right and s[left] == ' ':
			left += 1
		while left <= right and s[right] == ' ':
			right -= 1
		while left <= right:
			if s[left] != ' ':
				new_s.append(s[left])
			elif new_s[-1] != ' ':
				new_s.append(s[left])
			left += 1 
		//逆序所有的字符
		reverse_str = self.reverseString(new_s)
		//逆序每个单词的字符
		start,end = 0,0  # 控制每个单词的起点和终点
		for i in range(len(reverse_str)):
			if reverse_str[i] == ' ':
				end = i
				reverse_str = reverse_str[:start] + self.reverseString(reverse_str[start:end]) + reverse_str[end:]
				start = i + 1
		ans = ''.join(reverse_str)
		return ans
	def reverseString(self,string):
		n = len(string)
		left,right = 0,len(string) - 1
		while left < right:
			tmp = string[left]
			string[left] = string[right]
			string[right] = tmp
			left += 1
			right -= 1
		return string
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石头猿rock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值