Files
C_code/exercise/exercise/61.c
T
2025-12-23 08:04:26 +08:00

50 lines
1.2 KiB
C

#include <stdio.h>
#include <stdlib.h>
#ifdef _WIN32
#include <windows.h>
#endif
int main(void){
#ifdef _WIN32
system("chcp 65001 > nul");
SetConsoleOutputCP(65001);
SetConsoleCP(65001);
#endif
int n;
if (scanf("%d", &n) != 1) return 0;
char *s = (char*)malloc((size_t)n + 5);
scanf("%s", s);
int cntH = 0;
for (int i = 0; i < n; ++i) if (s[i] == 'H') ++cntH;
int cntT = n - cntH;
if (cntH == 0 || cntH == n){ printf("0\n"); free(s); return 0; }
char *d = (char*)malloc((size_t)2*n + 5);
for (int i = 0; i < n; ++i){ d[i] = s[i]; d[i+n] = s[i]; }
int lenH = cntH;
int t_in = 0;
for (int i = 0; i < lenH; ++i) if (d[i] == 'T') ++t_in;
int bestH = t_in;
for (int i = 1; i < n; ++i){
if (d[i-1] == 'T') --t_in;
if (d[i+lenH-1] == 'T') ++t_in;
if (t_in < bestH) bestH = t_in;
}
int lenT = cntT;
int h_in = 0;
for (int i = 0; i < lenT; ++i) if (d[i] == 'H') ++h_in;
int bestT = h_in;
for (int i = 1; i < n; ++i){
if (d[i-1] == 'H') --h_in;
if (d[i+lenT-1] == 'H') ++h_in;
if (h_in < bestT) bestT = h_in;
}
int ans = bestH < bestT ? bestH : bestT;
printf("%d\n", ans);
free(d);
free(s);
return 0;
}