给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
示例 4:
输入:s = “([)]”
输出:false
示例 5:
输入:s = “{[]}”
输出:true
一、代码
//有效括号
import java.util.Scanner;
import java.util.Stack;
public class two {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("请输入:");
String str = sc.nextLine().toString();
System.out.println(two.isbrace(str));
}
}
public static boolean isbrace(String s) {
Stack <Character>stack=new Stack<>();//建立一个栈
for(int i=0;i<s.length();i++){
char strs=s.charAt(i); //用strs存取输入的字符
if(strs=='(' || strs=='[' ||strs=='{'){
stack.push(strs);//将"(、[、{" 压入到栈中
}
else if(stack.isEmpty() || strs==')' && stack.pop()!='(' || strs==']' && stack.pop()!=']' || strs=='}'
&& stack.pop()!='{'){ // 如果栈不为空或strs为)和出栈元素不为(时则就不匹配返回false
return false;
}
}
return stack.empty();
}
}