在 Python 中查詢字串排序形式的迴文子串計數
假設我們有一個小寫字元的字串(全是 ASCII 字元),我們需要找到給定字串的所有不同的連續迴文子串。
所以,如果輸入是“level”,那麼輸出將是 7,因為有七個子串 ['level', 'eve', 'l', 'e', 'v', 'e', 'l']。
為了解決這個問題,我們將遵循以下步驟:
N := 26
n := 字串長度
sum := 0
my_map := 一個大小為 N 的列表,並填充 0
對於 i 從 0 到 n,執行:
my_map[str[i] 的 ASCII 值 - 'a' 的 ASCII 值] := my_map[str[i] 的 ASCII 值 - 'a' 的 ASCII 值] + 1
對於 i 從 0 到 N,執行:
如果 my_map[i] 非零,則
sum := sum + (my_map[i] * (my_map[i] + 1) / 2)
返回 sum
示例
讓我們看看下面的實現,以便更好地理解:
N = 26 def all_palindrome_substr_count(str): n = len (str) sum = 0 my_map = [0] * N for i in range(n): my_map[ord(str[i]) - ord('a')] += 1 for i in range(N) : if (my_map[i]): sum += (my_map[i] * (my_map[i] + 1) // 2) return sum str = "level" print (all_palindrome_substr_count(str))
輸入
"level"
輸出
7
廣告