不允許使用“Split()、Reverse()、Join() 或正則運算式”或任何其他幫助內置的 Python 函式
輸入這樣的東西:
" my name is scheven "
輸出如下:
"ym eman si nevehcs"
您需要考慮洗掉輸入中的起始、中間、結束空格
我已經嘗試了 2 次,但都失敗了,我將分享我解決這個問題的嘗試,并提出改進它的想法
第一次嘗試:
def reverseString(someString):
#lenOfString = len(someString)-1
emptyList = []
for i in range(len(someString)):
emptyList.append(someString[i])
lenOfString = len(emptyList)-1
counter = 0
while counter < lenOfString:
if emptyList[counter] == " ":
counter =1
if emptyList[lenOfString] == " ":
lenOfString-=1
else:
swappedChar = emptyList[counter]
emptyList[counter] = emptyList[lenOfString]
emptyList[lenOfString] = swappedChar
counter =1
lenOfString-=1
str_contactantion = ""
#emptyList = emptyList[::-1]
#count_spaces_after_letter=0
for letter in emptyList:
if letter != " ":
str_contactantion =letter
#str_contactantion =" "
str_contactantion =" "
return str_contactantion
第二次嘗試:
def reverse(array, i, j):
emptyList = []
if (j == i ):
return ""
for k in range(i,j):
emptyList.append(array[k])
start = 0
end = len(emptyList) -1
if start > end: # ensure i <= j
start, end =end, start
while start < end:
emptyList[start], emptyList[end] = emptyList[end], emptyList[start]
start = 1
end -= 1
strconcat=""
for selement in emptyList:
strconcat =selement
return strconcat
def reverseStr(someStr):
start=0
end=0
help=0
strconcat = ""
empty_list = []
for i in range(len(someStr)):
if(someStr[i] == " "):
continue
else:
start = i
j = start
while someStr[j] != " ":
j =1
end = j
#if(reverse(someStr,start,end) != ""):
empty_list.append(reverse(someStr,start,end))
empty_list.append(" ")
for selement in empty_list:
strconcat = selement
i = end 1
return strconcat
print(reverseStr(" my name is scheven "))
uj5u.com熱心網友回復:
以下作業無需管理索引:
def reverseString(someString):
result = crnt = ""
for c in someString:
if c != " ":
crnt = c crnt # build the reversed current token
elif crnt: # you only want to do anything for the first space of many
if result:
result = " " # append a space first
result = crnt # append the current token
crnt = "" # and reset it
if crnt:
result = " " crnt
return result
reverseString(" my name is scheven ")
# 'ym eman si nevehcs'
uj5u.com熱心網友回復:
嘗試這個:
def reverseString(someString):
result = ""
word = ""
for i in (someString " "):
if i == " ":
if word:
result = result (result and " ") word
word = ""
else:
word = i word
return result
然后你可以這樣稱呼它:
reverseString(" my name is scheven ")
# Output: 'ym eman si nevehcs'
uj5u.com熱心網友回復:
嘗試這個:
string = " my name is scheven "
def reverseString(someString):
result = ''
curr_word = ''
for i in someString:
if i == ' ':
if curr_word:
if result:
result = f'{result} {curr_word}'
else:
result = f'{result}{curr_word}'
curr_word = ''
else:
curr_word = f'{i}{curr_word}'
return result
print(repr(reverseString(string)))
輸出:
'ym eman si nevehcs'
注意:如果允許您使用list.append方法,我建議使用 a,collections.deque因為它比附加到串列的性能更高。但是當然,最后您需要將串列連接在一起,并且您提到不允許使用str.join,因此這肯定會帶來問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346719.html
