很简单直接找哪5个连续的字串中GC出现的次数高就行
#include<iostream>
using namespace std;
int main()
{
char in[100] ;
int start = 0, end = 0, num, len, finalstart, finalend, tempsum = 0, sum = 0;
gets_s(in);
len = strlen(in);
cin >> num;
end = num - 1;
for (; end<len; start++, end++)
{
for (int i = start; i <= end; i++)
{
if (in[i] == 'G' || in[i] == 'C')
{
tempsum++;
}
}
if (tempsum>sum)
{
sum = tempsum;
finalstart = start;
finalend = end;
}
tempsum = 0;
}
for (int i = finalstart; i <= finalend; i++)
{
cout << in[i];
}
cout << endl;
return 0;
}
结论:start和end的距离始终是5,所以这种解法的时间复杂度是O(n)