괄호 일치 M
14721 단어 일치하다
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #define Stack_Size 100
5 #define Stackincrement 10
6 #define ok 1
7 #define error 0
8 #define overflow 2
9 #define true 1
10 #define false 0
11 typedef int status;
12 typedef struct
13 {
14 char *base;
15 char *top;
16 int stacksize;
17 }SqStack;
18 status InitStack(SqStack &S)
19 {
20 S.base=(char *)malloc(Stack_Size*sizeof(char));
21 if(!S.base) exit(overflow);
22 S.top=S.base;
23 S.stacksize=Stack_Size;
24 return ok;
25 }
26 status StackEmpty(SqStack &S)
27 {
28 if(S.top==S.base)
29 return true;
30 else
31 return false;
32 }
33 status GetTop(SqStack S,char &e)
34 {
35 if(S.top==S.base) return error;
36 e=*(S.top-1);
37 return ok;
38 }
39 status Push(SqStack &S,char e)
40 {
41 if((S.top-S.base)==S.stacksize)
42 {
43 S.base=(char *)realloc(S.base,(S.stacksize+Stackincrement)*sizeof(char));
44 if(!S.base) exit(overflow);
45 S.top=S.base+S.stacksize;
46 S.stacksize+=Stackincrement;
47 }
48 *S.top++=e;
49 return ok;
50 }
51 status Pop(SqStack &S,char &e)
52 {
53 if(S.top==S.base) return error;
54 e=*--S.top;
55 return ok;
56 }
57 status match(char *array)
58 {
59 int i,length,state;
60 SqStack s;
61 char temp;
62 state=1;i=0;length=strlen(array);
63 InitStack(s);
64 while(i<length&&state)
65 {
66 switch(array[i])
67 {
68 case '(':
69 case '[':
70 {
71 Push(s,array[i]);break;
72 }
73 case ')':
74 {
75 GetTop(s,temp);
76 if(!StackEmpty(s)&&temp=='(')
77 Pop(s,temp);
78 else state=0;
79 break;
80 }
81 case ']':
82 {
83 GetTop(s,temp);
84 if(!StackEmpty(s)&&temp=='[')
85 Pop(s,temp);
86 else state=0;
87 break;
88 }
89 }
90 i++;
91 }
92 if(StackEmpty(s)&&state)
93 return ok;
94 else
95 return error;
96 }
97 int main()
98 {
99 int n;
100 char s[10000];
101 scanf("%d",&n);
102 getchar();
103 while(n--)
104 {
105 gets(s);
106 if(match(s))
107 puts("Yes");
108 else
109 puts("No");
110 }
111 return 0;
112 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 정규 일치 HTML의 a 태그의 중국어 문자 예본고는 자바 정규가 HTML의 a 라벨에 있는 중국어 문자와 일치하는 것을 실례로 설명한다.다음과 같이 여러분에게 참고할 수 있도록 공유합니다. 오늘 채팅방에서 한 친구가 정규 표현식에 대한 질문을 했는데 다음과 같...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.