要计算一个字符串的所有子串个数,可以使用以下方法:
基本方法
对于一个长度为 \( n \) 的字符串,其所有子串的个数可以通过公式 \( \frac{n \times (n + 1)}{2} \) 计算。这是因为你可以选择字符串中的任意一个字符作为子串的起始点,然后选择任意一个位置作为子串的结束点。因此,子串的总数是从 1 到 \( n \) 的所有整数的和,即 \( 1 + 2 + 3 + \ldots + n \),这可以通过等差数列求和公式 \( \frac{n \times (n + 1)}{2} \) 得到。
代码实现
下面是一个简单的 C++ 代码示例,用于计算一个字符串的所有子串个数:
```cpp
include include int main() { std::string s; while (std::getline(std::cin, s)) { int n = s.size(); int ans = n * (n + 1) / 2; std::cout << ans << std::endl; } return 0; } ``` 这段代码首先读取一行输入字符串 `s`,然后计算其长度 `n`。接着,使用公式 \( n \times (n + 1) / 2 \) 计算子串的个数,并将结果输出到标准输出。 这个方法的时间复杂度是 \( O(1) \),因为计算子串个数的操作不依赖于字符串的长度,只需要进行一次乘法和一次除法。解释