Python - N個重複K個字元的非重疊出現
本文將使用Python查詢N個重複K個字元的非重疊出現。在使用Python處理字串時,這類問題非常常見。
理解問題
問題在於查詢N個重複K個字元的非重疊出現。簡單來說,我們會得到一個字串,在這個字串中會有一些重複的字元,所以我們必須找出特定字元的出現次數並顯示其計數。這裡N是給定輸入字串中的任何字元,K是字元N的計數。
上述問題的邏輯
為了解決這個問題,我們將使用迴圈遍歷給定的字串,然後檢查N和K的值。並檢查包含N(K次)的子字串。並使用物件來儲存這些出現的計數。
演算法
步驟1 - 首先定義一個名為non_overlapping()的函式,在這個函式中,我們將傳遞三個引數n、k和the_str。這裡n是字元,k是n的字元計數,the_str是輸入字串
步驟2 - 初始化一個名為result的變數,該變數將用於跟蹤非重疊出現的計數。
步驟3 - 接下來,我們將使用分隔符'B'分割給定的字串the_str。這將建立一個子字串列表。
步驟4 - 將在一個迴圈中遍歷列表中的每個子字串。
步驟5 - 對於每個子字串,我們將使用lambda函式中的filter函式過濾字元N的出現。這裡lambda函式將用於檢查每個字元是否等於K。
步驟6 - 現在將過濾後的結果轉換為列表,然後計算長度。
步驟7 - 然後,我們將長度除以K以檢查當前子字串中非重疊出現的次數。
步驟8 - 之後,將count的值新增到result變數中。
步驟9 - 當迭代過程結束時,非重疊出現的最終計數將儲存在result變數中。
示例
# Define the function def non_overlapping(n, k, the_str): # Initialize the result object result = 0 # Traverse the string for sub in the_str.split('B'): result += len(list(filter(lambda x: x == k, sub))) // n return result the_str = 'AABBCCDDAABBGGHH' K = "A" N = 2 print("The Input String is : " + str(the_str)) Output = non_overlapping(N, K, the_str) print("Non-Overlapping occurrences result : " + str(Output))
輸出
The Input String is : AABBCCDDAABBGGHH Non-Overlapping occurrences result : 2
複雜度
查詢N個重複K個字元的非重疊出現的的時間複雜度為O(m),這裡m是給定輸入字串的長度。對於每次迭代,我們都過濾了字元A的出現次數,並計算了A出現K=2次的次數。
結論
我們已經使用Python實現了查詢N個重複K個字元的非重疊出現的解決方案。我們使用了一種非常直接的方法來解決這個問題,時間複雜度為O(m)。