字元型別 char 僅 256 種可能值 (0~255)。預先建立長度 256 的陣列,以字元 ASCII 碼為索引,存放對應結果。查找時直接 table[ch],時間複雜度 O(1)。
輸入 'a' 輸出 'Z','b'→'Y' ... 'z'→'A'。
#include <stdio.h>
void build_table(char table[256]) {
for (int i = 0; i < 256; ++i) table[i] = 0; // 初始化
char upper = 'Z';
for (char c = 'a'; c <= 'z'; ++c) {
table[(unsigned char)c] = upper--;
}
}
int main() {
char table[256];
build_table(table);
int ch = getchar();
if (ch != EOF) {
putchar(table[(unsigned char)ch]);
}
return 0;
}
(unsigned char) 避免 char 有號擴展導致負索引。此技巧是「空間換時間」經典案例,也是哈希表思想的最簡形式。