@@ -318,6 +318,57 @@ class Solution {
318
318
319
319
Python:
320
320
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
+
321
372
Go:
322
373
323
374
```go
0 commit comments