c 给出一个字符串,字符串中只有(、)、[、]、{、}六种字符。要求判断字符串中的括号是否合法匹配。
时间: 2024-04-29 19:22:51 浏览: 79
算法思路:
1. 遍历字符串,将左括号入栈;
2. 当遇到右括号时,判断栈顶元素是否与该右括号匹配,匹配则出栈,否则返回false;
3. 最后判断栈是否为空,为空则返回true,否则返回false。
C++代码实现:
```c++
#include<cstdio>
#include<stack>
#include<cstring>
using namespace std;
bool isMatch(char a,char b) // 判断左右括号是否匹配
{
if((a=='('&&b==')')||(a=='['&&b==']')||(a=='{'&&b=='}'))
return true;
else
return false;
}
bool isValid(char* s)
{
stack<char> st;
int len=strlen(s);
for(int i=0;i<len;i++)
{
if(s[i]=='('||s[i]=='['||s[i]=='{')
st.push(s[i]);
else if(s[i]==')'||s[i]==']'||s[i]=='}')
{
if(st.empty()||!isMatch(st.top(),s[i]))
return false;
st.pop();
}
}
return st.empty();
}
int main()
{
char s[100];
scanf("%s",s);
if(isValid(s))
printf("true\n");
else
printf("false\n");
return 0;
}
```
阅读全文