Skip to content

Commit 4142995

Browse files
Merge pull request #411 from yff-1996/master
添加151.翻转字符串里的单词 python版本
2 parents ed5dd01 + f4c597b commit 4142995

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

problems/0151.翻转字符串里的单词.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,57 @@ class Solution {
318318

319319
Python:
320320

321+
```Python3
322+
class Solution:
323+
#1.去除多余的空格
324+
def trim_spaces(self,s):
325+
n=len(s)
326+
left=0
327+
right=n-1
328+
329+
while left<=right and s[left]==' ': #去除开头的空格
330+
left+=1
331+
while left<=right and s[right]==' ': #去除结尾的空格
332+
right=right-1
333+
tmp=[]
334+
while left<=right: #去除单词中间多余的空格
335+
if s[left]!=' ':
336+
tmp.append(s[left])
337+
elif tmp[-1]!=' ': #当前位置是空格,但是相邻的上一个位置不是空格,则该空格是合理的
338+
tmp.append(s[left])
339+
left+=1
340+
return tmp
341+
#2.翻转字符数组
342+
def reverse_string(self,nums,left,right):
343+
while left<right:
344+
nums[left], nums[right]=nums[right],nums[left]
345+
left+=1
346+
right-=1
347+
return None
348+
#3.翻转每个单词
349+
def reverse_each_word(self, nums):
350+
start=0
351+
end=0
352+
n=len(nums)
353+
while start<n:
354+
while end<n and nums[end]!=' ':
355+
end+=1
356+
self.reverse_string(nums,start,end-1)
357+
start=end+1
358+
end+=1
359+
return None
360+
361+
#4.翻转字符串里的单词
362+
def reverseWords(self, s): #测试用例:"the sky is blue"
363+
l = self.trim_spaces(s) #输出:['t', 'h', 'e', ' ', 's', 'k', 'y', ' ', 'i', 's', ' ', 'b', 'l', 'u', 'e'
364+
self.reverse_string( l, 0, len(l) - 1) #输出:['e', 'u', 'l', 'b', ' ', 's', 'i', ' ', 'y', 'k', 's', ' ', 'e', 'h', 't']
365+
self.reverse_each_word(l) #输出:['b', 'l', 'u', 'e', ' ', 'i', 's', ' ', 's', 'k', 'y', ' ', 't', 'h', 'e']
366+
return ''.join(l) #输出:blue is sky the
367+
368+
369+
'''
370+
371+
321372
Go:
322373
323374
```go

0 commit comments

Comments
 (0)