给你一个字符串 text ,请你返回满足下述条件的 不同 非空子字符串的数目: 可以写成某个字符串与其自身相连接的形式(即,可以写为 a + a,其中 a 是某个字符串)。 例如,abcabc 就是 abc 和它自身连接形成的。
时间: 2024-05-16 21:17:23 浏览: 99
可以使用哈希表和双指针来解决这个问题。具体步骤如下:
1. 初始化一个空哈希表 counts。
2. 从字符串 text 的第一个字符开始,枚举所有可能的子字符串。
3. 对于每个子字符串 s,判断它是否可以写成某个字符串与其自身相连接的形式。如果是,就在哈希表 counts 中增加 s 的长度。具体来说,如果 s 的长度为 len,那么就将 counts[len] 的值加 1。
4. 最后,统计哈希表 counts 中值大于 1 的键的个数。这个值就是满足条件的非空子字符串的数目。
代码实现如下:
```python
def countSubstrings(text: str) -> int:
n = len(text)
counts = {}
for i in range(n):
for j in range(i, n):
s = text[i:j+1]
if s == s[::-1]:
counts[len(s)] = counts.get(len(s), 0) + 1
ans = 0
for count in counts.values():
if count > 1:
ans += 1
return ans
```
时间复杂度为 $O(n^3)$,其中 $n$ 是字符串 text 的长度。
阅读全文