一个字符串的非空子串是指字符串中长度至少为1的连续的一段字符组成的串。例如,字符串aaab有非空子串a,b,aa,ab,aaa,aab,aaab一共七个。注意在计算时,只算本质不同的串的个数。 请问,字符串0100110001010001有多少个不同的非空子串?
时间: 2024-05-20 09:17:46 浏览: 117
将字符串分解为所有长度的子串,计算每个子串的本质不同的个数,然后将它们相加即可。
例如,对于长度为3的子串,可以分别计算它们的本质不同个数:
010 -> 2
100 -> 2
001 -> 2
110 -> 2
000 -> 1
101 -> 2
010 -> 2
100 -> 2
001 -> 2
010 -> 2
101 -> 2
010 -> 2
001 -> 2
010 -> 2
101 -> 2
010 -> 2
共计18个不同的本质不同的子串。
对于长度为1和2的子串也做同样的计算,最终得到总共的本质不同的非空子串个数为:
1 + 18 + 14 + 6 + 1 = 40
所以字符串0100110001010001有40个不同的非空子串。
相关问题
一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。 注意在计算时,只算
这是一道计算题。非空字符串的非空子串是指字符串中长度至少为1的连续字符组成的子串。例如,字符串aaab的非空子串有a、b、aa、ab、aaa、aab、aaab,一共有7个。注意在计算时,只算非空子串的数量。
Python一个字符串的非空子串是指字符串中长度至少为 1 的连续的一 段字符组成的串。例如,字符串 aaab 有非空子串 a, b, aa, ab, aaa, aab, aaab,一共 7 个。注意在计算时,只算本质不同的串的个数。 请问: 字符串 0100110001010001 有多少个不同的非空子串?
首先,该字符串的长度为 16,长度至少为 1 的连续子串的数量为 1 + 2 + 3 + ... + 16,即等差数列求和公式 (1 + 16) * 16 / 2 = 136。但是还要去重,即计算本质不同的子串数量。
我们可以使用哈希表来记录出现过的子串,具体实现如下:
```python
s = '0100110001010001'
substrings = set()
for i in range(len(s)):
for j in range(i + 1, len(s) + 1):
substrings.add(hash(s[i:j]))
print(len(substrings))
```
其中,hash 函数将子串转换为一个唯一的整数,加入到哈希表中。最终,输出哈希表元素的数量即为不同的非空子串数量。运行结果为 85。
阅读全文