📌  相关文章
📜  来自给定字符串的有效对 (X, Y) 的计数,以便将 X 与其自身连接会产生 Y(1)

📅  最后修改于: 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)$。