while ((ch = getchar()) != '\n') // ❌ 測試資料可能無換行符結尾 (EOF)
count[ch - '0']++;
若輸入以 **EOF 結尾** 而非 `\n`,迴圈永不結束 → **TLE (Time Limit Exceeded)**。
#include <stdio.h>
#include <string.h>
int main() {
char s[1005];
if (scanf("%1004s", s) != 1) return 0; // %s 自動跳過空白、讀到空白/EOF 停止
int count[10] = {0};
for (int i = 0; s[i]; i++)
if (s[i] >= '0' && s[i] <= '9')
count[s[i] - '0']++;
for (int i = 0; i < 10; i++)
if (count[i]) printf("%d:%d\n", i, count[i]);
return 0;
}
時間 O(n),空間 O(1),極易通過。