解题思路: 遍历法
输入 字符串 str 和指定长度nums后,遍历 strlen(str)- nums
将其中 G 和C 字符的数量做统计 ,赋值给cur_max;
同时,每进行一次 字符统计后 将其做一个 暂存,分别存放 查找的 起始节点和 最大的 G C 字符的数量;
待遍历完成后,打印index 开始的nums 个字符即可。
收获:
不要吝啬用 全局变量, 但是 变量的命名 和 用法要做到心中有数。
#include <stdio.h>
int main(void) {
int nums = 0;
int index = 0;
int temp_max = 0;
char str[1000] = {0};
scanf("%s", str);
scanf("%d", &nums);
int length = strlen(str);
for (int i= 0; i < length-nums; i++) {
int cur_max = 0;
for (int j= i; j < i+nums; j++) {
if ((str[j] == 'G') || (str[j] == 'C')) {
cur_max++;
}
}
if(cur_max > temp_max) {
temp_max = cur_max;
index = i;
}
}
for (int k = index; k < index+nums; k++) {
printf("%c", str[k]);
}
printf("\n");
return 0;
}