输入包含一行:
包括一个只含'(',')','{','}','[',']'的字符串,长度小于等于50
合法输出true,否则输出false。
()
true
import java.util.Scanner; import java.util.Stack; /** * * 输入为只包含'(', ')', '{', '}', '[' 和']'这六个括号字符的字符串。判断输入字符串中的括号是否符合代数算式规则。例如, * "()"、"({})" 和 "()[]" 是合法的括号。而 "(]" 和 "([)]" 不是。 * * @author Zzk * */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String s = sc.next(); System.out.println(bracketMatch(s)); } } private static boolean bracketMatch(String s) { Stack<Character> stack = new Stack<Character>(); boolean flag = true; char[] chs = s.toCharArray(); Character c; for (char ch : chs) { if (ch == '(' || ch == '[' || ch == '{') { stack.add(ch); } else { if (stack.isEmpty()) { flag = false; break; } else { c = stack.peek(); if (isMatch(c, ch)) { stack.pop(); } else { flag = false; break; } } } } if(stack.size()!=0) flag = false; return flag; } private static boolean isMatch(Character ch, char c) { if (ch == '{' && c == '}') { return true; } if (ch == '(' && c == ')') { return true; } if (ch == '[' && c == ']') { return true; } return false; } }
let line = readline() const arr = [] let tmp let res = true for(let item of line) { switch(item) { case '(': case '[': case '{': arr.push(item) break case ')': tmp = arr.pop() if(tmp !== '(') res = false break case ']': tmp = arr.pop() if(tmp !== '[') res = false break case '}': tmp = arr.pop() if(tmp !== '{') res = false } } if(res) { res = arr.length === 0 ? true : false } print(res)
#include<stdio.h> #include<stack> #include<map> using namespace std; int main(){ stack<char> s; map<char,char> book; book[')']='(',book[']']='[',book['}']='{'; char in[100]; scanf("%s",in); int flag=1,i; for(i=0;in[i]!='\0';i++) if(in[i]=='('||in[i]=='['||in[i]=='{') s.push(in[i]); else{ if(s.empty()||s.top()!=book[in[i]]){ flag=0;break; } s.pop(); } printf("%s",s.empty()&&flag?"true":"false"); }
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[60]="",s[60]="";
int i,j=-1;
cin>>a;
for(i=0;i<strlen(a);++i){
if(j==-1){s[++j]=a[i];continue;}
if(a[i]=='('||a[i]=='['||a[i]=='{'){s[++j]=a[i];continue;}
else if(a[i]-s[j]==1||a[i]-s[j]==2)s[j--]=0;
else {cout<<"false"<<endl;return 0;}
}
cout<<(j==-1?"true":"false")<<endl;
return 0;
}