在 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