日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[leetcode]151.翻转字符串里的单词

發(fā)布時間:2024/2/28 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [leetcode]151.翻转字符串里的单词 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

給你一個字符串 s ,逐個翻轉(zhuǎn)字符串中的所有 單詞

單詞 是由非空格字符組成的字符串。s 中使用至少一個空格將字符串中的 單詞 分隔開。

請你返回一個翻轉(zhuǎn) s 中單詞順序并用單個空格相連的字符串。

說明:

  • 輸入字符串 s 可以在前面、后面或者單詞間包含多余的空格。
  • 翻轉(zhuǎn)后單詞間應(yīng)當(dāng)僅用一個空格分隔。
  • 翻轉(zhuǎn)后的字符串中不應(yīng)包含額外的空格。

示例 1:

輸入:s = "the sky is blue" 輸出:"blue is sky the"

示例 2:

輸入:s = " ?hello world ?"
輸出:"world hello"
解釋:輸入字符串可以在前面或者后面包含多余的空格,但是翻轉(zhuǎn)后的字符不能包括。

?示例 3:

輸入:s = "a good ??example"
輸出:"example good a"
解釋:如果兩個單詞間有多余的空格,將翻轉(zhuǎn)后單詞間的空格減少到只含一個。

?示例 4:

輸入:s = " Bob Loves Alice " 輸出:"Alice Loves Bob"

示例 5:

輸入:s = "Alice does not even like bob" 輸出:"bob like even not does Alice"

?提示:

  • 1 <= s.length <= 104
  • s?包含英文大小寫字母、數(shù)字和空格?' '
  • s?中?至少存在一個?單詞

進(jìn)階:

  • 請嘗試使用?O(1)?額外空間復(fù)雜度的原地解法。

雙指針

class Solution: # 1.去除多余的空格def trim_space(self, s: str) -> str:n=len(s)left=0right=n-1while left<=right and s[left]==' ':left+=1while left<=right and s[right]==' ':right-=1tmp=[]while left<=right:if s[left]!=' ':tmp.append(s[left])elif tmp[-1]!=' ':tmp.append(s[left])left+=1return tmp # 2.翻轉(zhuǎn)字符串def reverse_string(self,nums,left,right):while left<right:nums[left],nums[right]=nums[right],nums[left]left+=1right-=1return None # 3.翻轉(zhuǎn)每個單詞def reverse_each_word(self,nums):start=0end=0n=len(nums)while start<n:while end<n and nums[end]!=' ':end+=1self.reverse_string(nums,start,end-1)start=end+1end+=1return None # 4.翻轉(zhuǎn)字符串里的單詞def reverseWords(self,s):l=self.trim_space(s)self.reverse_string(l,0,len(l)-1)self.reverse_each_word(l)return ''.join(l)

總結(jié)

以上是生活随笔為你收集整理的[leetcode]151.翻转字符串里的单词的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。