,输入为一个只包含字母的字符串s。要求返回一个字典,计算由单一字母构成的连续子串的长度,键是连续字串的单一字母,值是该连续字串重复的个数.
时间: 2023-06-27 20:02:51 浏览: 73
两个字符串中最大相同的子串。 "qwerabcdtyuiop" "xcabcdvbn"
好的,可以使用双指针来解决这个问题。具体步骤如下:
1. 定义一个字典,用于存储结果;
2. 使用双指针 i 和 j,初始化为0;
3. 当 j 小于字符串 s 的长度时,进行循环,每次循环 j 自增1;
4. 如果 s[j] 与 s[i] 不相等,将当前连续子串的长度和对应的字符存入字典中,并将 i 更新为 j;
5. 循环结束后,将最后一个连续子串的长度和对应的字符存入字典中;
6. 返回字典。
代码如下:
```python
def count_substring(s):
res = {}
i, j = 0, 0
while j < len(s):
if s[j] != s[i]:
res[s[i]] = j - i
i = j
j += 1
res[s[i]] = j - i
return res
```
使用示例如下:
```python
s = 'aaabbbcccd'
print(count_substring(s)) # {'a': 3, 'b': 3, 'c': 3, 'd': 1}
```
阅读全文