1.试写一个函数,计算字符串 s中最大连续相同的字符个数。例如,若s 为"aaabbbb",则返回值为4;若s为"abcde",则返回值为1。 函数原型:int max_same_char( char* s) c语言
时间: 2024-10-12 08:15:22 浏览: 50
在C语言中,你可以创建一个函数`max_same_char`来解决这个问题。这里是一个简单的实现思路:
```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("Max continuous same characters: %d\n", result);
s[0] = 'a';
s[7] = 'b'; // 修改示例,测试新的输入
result = max_same_char(s);
printf("For modified string: %s, Max count: %d\n", s, result);
return 0;
}
// 实现 `max_same_char` 函数
int max_same_char(char *s) {
if (s == NULL || strlen(s) == 0) {
return 0; // 如果字符串为空或NULL,则返回0
}
int max_count = 1, current_count = 1;
for (int i = 1; s[i] != '\0'; i++) {
if (s[i] == s[i - 1]) { // 检查当前字符是否等于前一个
current_count++;
} else {
// 如果不同,更新最大计数并从1开始计数
max_count = max(max_count, current_count);
current_count = 1;
}
}
// 别忘了处理字符串最后一个字符的情况
max_count = max(max_count, current_count);
return max_count;
}
// 辅助函数用于比较两个整数的最大值
static inline int max(int a, int b) {
return (a > b) ? a : b;
}
```
这个程序首先检查输入的字符串是否为空,然后遍历字符串中的每个字符,如果相邻的字符相同,就增加当前计数;如果不相同,就比较当前计数和之前的最大计数,并更新最大计数。最后返回最大计数作为结果。
阅读全文