[英]python 2.7 string reverse
如果除了使用系統庫之外,我還需要自己在Python 2.7中實現字符串反向,請問是否還有更有效的解決方案? 我嘗試了很長的字符串(例如幾千個字符)的代碼運行緩慢。 謝謝。
對於反向字符串,例如,給定s =“ hello”,則返回“ olleh”。
def reverseString(self, s):
"""
:type s: str
:rtype: str
"""
if not s:
return ''
temp = []
result=''
for i in range(len(s)-1,-1,-1):
result += s[i]
return result
問候,林
嘗試這個:
def reverseString(self, s):
return s[::-1]
嘗試遞歸
def reverse(str):
if str == "":
return str
else:
return reverse(str[1:]) + str[0]
我對這兩個函數進行了粗略的測試,其復雜度看起來是相同的:線性
似乎從Python 2.4開始,對於CPython,已經進行了避免二次行為的優化。 請參閱以下針對類似問題的答案:
https://stackoverflow.com/a/37133870/5014455
我在下面說的對於Python 2.7已經過時了。
這將是O(n ^ 2),因為字符串在Python中是不可變的,因此:
result += s[i]
循環中的每次迭代都會觸及結果字符串中的ever元素。 建立單個字符的可變容器(例如列表),然后在末尾加入“”會更快。
def reverseString(s):
"""
:type s: str
:rtype: str
"""
if not s:
return ''
result = []
for i in xrange(len(s)-1,-1,-1):
result.append(s[i])
return "".join(result)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.