簡體   English   中英

python 2.7反向字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM