非常实用的word文本括号匹配是否正确的code,可按照此思路扩展到python处理大批量文本文件的检错中,非常实用!!!
原理:
栈
代码:
#include <stdio.h>
#include <stdlib.h>
#include"stack.h"
int togetherSymbol(char a, char b) {
if (a == '(' && b == ')' || a == '[' && b == ']' || a == '{' && b == '}')
return 1;
return 0;
}
int isProper(char *a,int n) {
stack Stack;
init(Stack);
for (int i = 0; i < n; i++) {
if (a[i] == '(' || a[i] == '[' || a[i] == '{') {
push(Stack, a[i]);
}
else {
if (!empty(Stack)) {
char temp;
pop(Stack, temp);
int situation = togetherSymbol(temp, a[i]);
if (situation == 0) {
return 0;
}
}
else {
return 0;
}
}
}
if (empty(Stack))
return 1;
return 0;
}
int main() {
char kuo[10] = "(([])){}";
if (isProper(kuo,8)) {
printf("括号搭配成功!\n");
}
else {
printf("括号搭配失败!\n");
}
system("pause");
return 0;
}
测试截图:
时间复杂度O(n),空间复杂度O(1)
如果存在什么问题,欢迎批评指正!谢谢!
|