掃描字符流,維護計數器 cnt:
'{' → cnt++'}' → 若 cnt==0 則錯誤(多右括號),否則 cnt--cnt==0 匹配成功,否則缺右括號。#include <stdio.h>
int main() {
int cnt = 0;
char ch;
while ((ch = getchar()) != '\n') {
if (ch == '{') cnt++;
else if (ch == '}') {
if (cnt == 0) { printf("匹配失敗!\n"); return 0; }
cnt--;
}
}
if (cnt == 0) printf("匹配成功!\n");
else printf("匹配失敗!\n");
return 0;
}
輸入: { { } }
輸出: 匹配成功!
輸入: { } }
輸出: 匹配失敗!
同理可擴展至 ()、[] 多類型括號,使用堆疊存儲括號類型。