在 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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP