编写一个函数,计算字符串 s中最大连续相同的字符个数。例如,若s 为"aaabbbb",则返回值为4;若s为"abcde",则返回值为1。
时间: 2024-03-06 19:47:05 浏览: 23
好的,以下是符合您要求的 Python 代码:
```python
def max_consecutive_chars(s):
max_count = 1
curr_count = 1
for i in range(1, len(s)):
if s[i] == s[i-1]:
curr_count += 1
else:
max_count = max(max_count, curr_count)
curr_count = 1
return max(max_count, curr_count)
```
这个函数使用了一个 `max_count` 变量来记录当前出现的最大连续字符数,以及一个 `curr_count` 变量来记录当前正在统计的连续字符数。我们遍历整个字符串,如果当前字符与前一个字符相同,那么 `curr_count` 就加 1;否则,我们需要更新 `max_count` 的值,并将 `curr_count` 重置为 1。最后,我们需要将 `max_count` 和 `curr_count` 中的较大值返回作为结果。
相关问题
c语言编写一个函数,计算字符串 s中最大连续相同的字符个数。例如,若s 为"aaabbbb",则返回值为4;若s为"abcde",则返回值为1。
好的,以下是符合您要求的 C 语言代码:
```c
#include <stdio.h>
int max_consecutive_chars(char* s) {
int max_count = 1;
int curr_count = 1;
for (int i = 1; s[i] != '\0'; i++) {
if (s[i] == s[i-1]) {
curr_count++;
} else {
max_count = (curr_count > max_count) ? curr_count : max_count;
curr_count = 1;
}
}
return (curr_count > max_count) ? curr_count : max_count;
}
int main() {
char s1[] = "aaabbbb";
char s2[] = "abcde";
printf("%d\n", max_consecutive_chars(s1)); // 输出 4
printf("%d\n", max_consecutive_chars(s2)); // 输出 1
return 0;
}
```
这个函数和 Python 版本的思路基本相同,只是使用了 C 语言的语法。我们使用一个 `max_count` 变量来记录当前出现的最大连续字符数,以及一个 `curr_count` 变量来记录当前正在统计的连续字符数。我们遍历整个字符串,如果当前字符与前一个字符相同,那么 `curr_count` 就加 1;否则,我们需要更新 `max_count` 的值,并将 `curr_count` 重置为 1。最后,我们需要将 `max_count` 和 `curr_count` 中的较大值返回作为结果。
需要注意的是,C 语言中的字符串是以 null 结尾的字符数组,因此我们需要在遍历字符串时检查当前字符是否为 null,以避免访问越界。
1.试写一个函数,计算字符串 s中最大连续相同的字符个数。例如,若s 为"aaabbbb",则返回值为4;若s为"abcde",则返回值为1。 函数原型:int max_same_char( char* s)
这是一个简单的字符串处理问题,可以使用C语言编写一个函数来解决。下面是一个可能的解决方案:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
int max_same_char(char* s);
// 主函数演示如何调用
int main() {
char s[] = "aaabbbb";
int result = max_same_char(s);
printf("最长连续相同的字符个数: %d\n", result);
s[0] = 'a'; // 示例改变输入
result = max_same_char(s);
printf("新输入 (abcde): 最长连续相同的字符个数: %d\n", result);
return 0;
}
// 实现 max_same_char 函数
int max_same_char(char* s) {
if (s == NULL || *s == '\0') {
return 0; // 如果字符串为空或结束,则无相同字符
}
int maxLength = 1; // 初始化最大长度为第一个字符
int currentLength = 1;
for (int i = 1; s[i] != '\0'; i++) {
if (s[i] == s[i - 1]) { // 比较当前字符是否和前一个相同
currentLength++;
} else { // 不同,更新最大长度并从新开始计数
maxLength = max(maxLength, currentLength); // 使用max函数防止越界
currentLength = 1;
}
}
// 别忘了处理最后一个连续的字符
maxLength = max(maxLength, currentLength);
return maxLength;
}
// 辅助函数,用于找到两个整数的最大值
static int max(int a, int b) {
return a > b ? a : b;
}
```
这个程序会遍历输入的字符串,每次遇到相同的字符就增加当前连续字符的计数,直到遇到不同的字符为止。然后它会比较当前的最长连续长度与之前记录的最大长度,并更新结果。
阅读全文