我正在尝试将一个句子中的一个单词反转。
例如:
arr = [ 'p', 'e', 'r', 'f', 'e', 'c', 't', ' ', 'm', 'a', 'k', 'e', 's', ' ', 'p', 'r', 'a', 'c', 't', 'i', 'c', 'e' ]
应该
[ 'p', 'r', 'a', 'c', 't', 'i', 'c', 'e', ' ', 'm', 'a', 'k', 'e', 's', ' ', 'p', 'e', 'r', 'f', 'e', 'c', 't' ]
我编写了以下代码,该代码反转整个数组,然后反转每个单词
def reverse_words(arr):
def mirrorReverse(arr,start,end):
while(start<end):
tmp=arr[start]
arr[start]=arr[end]
arr[end]=tmp
start+=1
end-=1
n=len(arr)
mirrorReverse(arr,0,n-1)
for i in range(len(arr)):
if arr[i]==' ' and start==0: #first word
mirrorReverse(arr,start,i-1)
start=i+1
elif i==len(arr)-1: #last word
mirrorReverse(arr,start,i)
elif arr[i]==' ' and start!=None: #middle
mirrorReverse(arr,start,i-1)
start=i+1
return arr
这可以正常工作并输出所需的答案,但是当我使用其他示例时,它不起作用:
测试1:
["a"," "," ","b"]
预期:
["b"," "," ","a"]
实际:
['a', ' ', ' ', 'b']
测试2:
["y","o","u"," ","w","i","t","h"," ","b","e"," ","f","o","r","c","e"," ","t","h","e"," ","m","a","y"]
输出:
['y', 'o', 'u', ' ', 'w', 'i', 't', 'h', ' ', 'b', 'e', ' ', 'f', 'o', 'r', 'c', 'e', ' ', 't', 'h', 'e', ' ', 'm', 'a', 'y']
即使test2与上面的主要示例相似,也可以正常工作。任何帮助
您的代码看起来还不错。您的示例和代码中有两个空格,但是测试用例中只有一个空格。当我复制粘贴您的代码,并将if中的双倍空白更改为单个空白时,一切正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句