[데이터 구조] 스 택 의 응용 - 괄호 가 일치 하 는 지 확인 합 니 다.
5655 단어 데이터 구조
가설 표현 식 에는 세 가지 괄호 가 포함 되 어 있 습 니 다. 괄호, 네모 난 괄호, 큰 괄호 등 이 포함 되 어 있 습 니 다. 즉, {() []} 또는 {()} 등 이 올 바른 형식 으로 일치 하 는 것 입 니 다. 즉, 일치 하 는 것 입 니 다. [(]) 또는 ()} 등 은 올 바 르 지 않 은 형식 으로 일치 하지 않 습 니 다. 괄호 가 일치 하 는 지 확인 하 는 방법 은 '기대 하 는 긴박 도' 라 는 개념 으로 설명 할 수 있 습 니 다.
괄호 매 칭 은 다음 과 같은 몇 가지 상황 으로 나 뉜 다.
char a[] = "(())abc{[(])}" ; //
char b[] = "(()))abc{[]}" ; //
char c[] = "(()()abc{[]}" ; //
char d[] = "(())abc{[]()}" ; //
2. 코드 구현
코드 는 다음 과 같 습 니 다:
#include
#include
using namespace std;
bool MatchBrackets(char str[], size_t size)
{
stack<char> s;
for (size_t i = 0; i < size; ++i)
{
if (str[i] != '(' && str[i] != ')' &&
str[i] != '[' && str[i] != ']' &&
str[i] != '{' && str[i] != '}')
{
continue;
}
else
{
if ('(' == str[i] || '{' == str[i] || '[' == str[i])
{
s.push(str[i]);
}
else
{
if (s.empty())
{
cout << " " << endl;
return false;
}
char c = s.top();
if (('(' == c && ')' == str[i]) ||
('{' == c && '}' == str[i]) ||
('[' == c && ']' == str[i]))
{
s.pop();
}
else
{
cout << " " << endl;
return false;
}
}
}
}
if (!s.empty())
{
cout << " " << endl;
return false;
}
cout << " " << endl;
return true;
}
int main()
{
char a[] = "(())abc{[(])}"; //
char b[] = "(()))abc{[]}"; //
char c[] = "(()()abc{[]}"; //
char d[] = "(())abc{[]()}"; //
cout << MatchBrackets(a, strlen(a)) << endl;
cout << MatchBrackets(b, strlen(b)) << endl;
cout << MatchBrackets(c, strlen(c)) << endl;
cout << MatchBrackets(d, strlen(d)) << endl;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.