2.编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。比如字符串"abbcccaddd"子串有"bb"、"cc"、"cc"、"dd"、"dd"、"ccc"和"ddd",共7个。函数原型为:int fun(const char *str);
时间: 2023-07-06 21:20:21 浏览: 75
好的,下面是实现该函数的 C++ 代码:
```c++
#include <iostream>
#include <string>
int fun(const char *str) {
std::string s(str);
int cnt = 0;
for (int i = 0; i < s.size() - 1; i++) {
int j = i + 1;
while (j < s.size() && s[j] == s[i]) {
j++;
}
int len = j - i;
cnt += len * (len - 1) / 2;
i = j - 1;
}
return cnt;
}
int main() {
std::cout << fun("abbcccaddd") << std::endl; // 输出 7
return 0;
}
```
该函数的实现思路是:从字符串的第一个字符开始遍历,记录当前字符连续出现的次数,直到遇到不同的字符或者到达字符串末尾。在统计当前字符连续出现次数时,可以使用一个 while 循环来完成。统计子串的个数时,可以根据当前字符连续出现的次数计算得到。最后返回子串的个数即可。
相关问题
.编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数
可以使用一个计数器来记录相邻字符相同的子串的数量。我们可以遍历字符串,检查当前字符和前一个字符是否相同,如果相同,计数器加1,否则计数器重置为1。同时,如果计数器大于1,说明存在相邻字符相同的子串,将计数器的值加入结果中。
下面是一个 Python 实现的示例代码:
```python
def count_adjacent_duplicates(s):
count = 0
result = 0
for i in range(1, len(s)):
if s[i] == s[i-1]:
count += 1
else:
if count > 0:
result += count + 1
count = 0
if count > 0:
result += count + 1
return result
```
我们可以测试一下这个函数:
```python
>>> count_adjacent_duplicates("hello")
2
>>> count_adjacent_duplicates("mississippi")
8
>>> count_adjacent_duplicates("abcde")
0
```
.编写一个函数,接收一个字符串,统计其中任意两个及两个以上相邻字符相同的子串的个数。
以下是Python的实现代码:
```python
def count_substrings(s):
count = 0
for i in range(len(s)-1):
for j in range(i+1, len(s)):
if s[j] == s[j-1]:
count += 1
else:
break
return count
```
该函数遍历字符串中的所有子串,计算其中相邻字符相同的子串的个数,最终返回计数值。
阅读全文
相关推荐












