首頁  >  文章  >  後端開發  >  Python - 連續字元的最小和

Python - 連續字元的最小和

王林
王林轉載
2023-09-08 19:37:021460瀏覽

Python - 连续字符的最小和

簡介

在Python編程中,找到每個字串中連續字元的最小和的任務可能是不同應用程式中常見的問題。目標是識別出在考慮其字元的ASCII值時產生最小總和的子字串。本文探討了使用Python處理問題的不同方法。文章首先介紹了找到連續字元的最小總和及其在解決實際問題中的相關性的重要性。它強調了有效演算法在優化最小總和計算中的重要性。

Python − 連續字元的最小和

在Python編程中,找到每個字串中最小完整的連續字元的任務包括區分字串中的子字串,該子字串在考慮其字元的ASCII值時產生最小的整體。目標是確定在所有可能的子字串中產生最小整體的子字串。

為了解決這個問題,我們可以在Python中利用不同的方法和途徑。這些方法包括透過字串重複和計算連續子字串的整數部分,比較它們,並追蹤遇到的最小整數。透過考慮字元的ASCII值並進行適當的計算,能夠發現產生最小整數的子字串。

Python提供了一些內建的功能和特性,可以促進這些方法的執行。像ord()這樣的函數可以用來取得字元的ASCII值,而迴圈和條件語句使我們能夠遍歷字串並執行必要的計算。透過利用這些功能,我們能夠成功解決問題並得到所需的連續字元的最小總和。

方法 1:使用暴力破解

主要方法可能是暴力策略,包括重複給定字串中所有可能的順序子字串。以下是使用此方法解決問題的步驟:

演算法

步驟 1 :使用一個巨大的值(例如無限大)初始化變數min_sum,以追蹤最小和。

步驟2:利用兩個巢狀循環強調給定字串的所有可能子字串。外循環決定子字串的起始索引,內循環確定結束索引。

第 3 步:利用 Python 的內建 sum() 函數或透過物理強調子字串並包含字元值來計算目前子字串的整體。 p>

第 4 步:將計算的整體與目前的最小總和 (min_sum) 進行比較。如果計算出的完整性為最小值,則將 min_sum 升級為未使用的最小完整性。

步驟 5:對所有子字串重複步驟 3 和 4。

步驟 6 :將最終的最小總和(min_sum)作為結果傳回。

範例

def minimum_sum_of_consecutive_chars(string):
    min_sum = float('inf')
    length = len(string)

    for i in range(length):
        for j in range(i, length):
            substring = string[i:j+1]
            current_sum = sum(ord(c) for c in substring)
            min_sum = min(min_sum, current_sum)

    return min_sum

    
string = "abcde"
print(minimum_sum_of_consecutive_chars(string))

輸出

97

方法 2:使用動態規劃

第二種方法利用動態規劃更有效地解決連續字元的最小總和問題。該方法透過將子問題的結果儲存在記憶表中來避免重複計算。以下是實施這種方法的步驟:

演算法

步驟 1 :定義使用者自訂函數。確定字串的長度。

步驟 2 :初始化基本情況。將memo[i][i](角到角的組件)設定為字串中列表i處字元的ASCII值。

第 3 步:強調從 2 到字串長度的所有長度為 l 的子字串。對於每個子字串,強調所有開始列表

步驟4:計算目前子字串的總和,並更新記憶表中的對應段落。

第5步:最後,從備忘錄表的右上角回到最小的整體。

範例

def minimum_sum_of_consecutive_chars(string):
    length = len(string)
    memo = [[0] * length for _ in range(length)]

    for i in range(length):
        memo[i][i] = ord(string[i])

    for l in range(2, length + 1):
        for i in range(length - l + 1):
            j = i + l - 1
            memo[i][j] = memo[i][j - 1] + ord(string[j])

    return min(memo[i][j] for i in range(length) for j in range(i, length))

  
string = "abcde"
print(minimum_sum_of_consecutive_chars(string))

輸出

97

方法三:使用滑動視窗

第三種方法,稱為滑動視窗方法,優化了先前的方法,透過消除多餘的計算來提高效率。與遍歷所有可能的子字串不同,這種方法維護一個滑動窗口,表示目前正在考慮的子字串。以下是執行滑動視窗方法的步驟:

演算法

步驟 1 :在字串的開始處初始化兩個指針,begin 和 conclusion。

第 2 步:初始化變數 current_sum 來追蹤目前視窗的總和。

第 3 步:初始化 min_sum 並使其具有無限性

步驟4:將最小總和(min_sum)作為結果傳回。

範例

def minimum_sum_of_consecutive_chars(string):
    start = 0
    end = 0
    length = len(string)
    current_sum = ord(string[0])
    min_sum = float('inf')

    while end < length:
        if current_sum < min_sum:
            min_sum = current_sum

        end += 1

        if end < length:
            current_sum += ord(string[end])

        while current_sum >= min_sum and start < end:
            current_sum -= ord(string[start])
            start += 1

    return min_sum

    
string = "abcde"
print(minimum_sum_of_consecutive_chars(string))

輸出

97

結論

我們研究了三種不同的方法來理解Python中最小連續字元的問題。我們討論了一種蠻力約束方法,一種動態規劃方法和一種滑動視窗方法。每種方法都有自己的步驟,程式碼執行和輸出,展示了處理問題的不同演算法方法。透過理解這些方法,您可以選擇最適合您特定需求的解決方案,並優化Python中最小連續字元的計算。

以上是Python - 連續字元的最小和的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除