📅  最后修改于: 2023-12-03 15:26:34.911000             🧑  作者: Mango
在给定字符串中,如果将两个非空字符串连接起来后得到另一个字符串,则这两个字符串是有效的。例如,在给定字符串 "abc" 中,有效对包括 ("a", "bc")、("ab", "c") 和 ("abc", "")。
本程序旨在计算给定字符串中有效对的数量,以便将一个字符串与其本身连接起来得到另一个字符串。
函数的输入为一个非空字符串。
函数将返回一个整数,表示给定字符串中有效对的数量。
def count_valid_pairs(s: str) -> int:
valid_pairs = 0
n = len(s)
for i in range(1, n):
for j in range(i, n):
if s[j:].startswith(s[:j-i]):
valid_pairs += 1
return valid_pairs
下面分别解释两个字符串的有效对数量。
"abc"
,有效对包括 ("a", "bc")、("ab", "c") 和 ("abc", "")。因此,有效对数量为 3。"aaaaa"
,有效对只有 ("a", "aaaa") 和 ("aa", "aaa")。因此,有效对数量为 2。该算法时间复杂度为 $O(n^2)$,空间复杂度为 $O(1)$。