支架平衡

2022-01-28 12:40:35 标签 javastack

有人能帮我这个代码,它不是与这个测试用例{(([])[])[]]}工作。

package myProject;
import java.util.*;
public class bracketBalancing {
    public static void main (String[] args) {
    Scanner sc=new Scanner(System.in);
        
        System.out.println("Enter String");
    String s=sc.next();
    Stack<Character> stack=new Stack<Character>();
    if(s.length()==0)
    System.out.println("string is empty");
    else {
      for(int i=0;i<s.length();i++){
      char ch=s.charAt(i);
      
      if(ch=='('||ch=='{'||ch=='['){
         stack.push(ch);
      }
      else if(ch==')'&& stack.peek()=='('){
          stack.pop();
      }
      else if(ch=='}'&& stack.peek()=='{'){
          stack.pop();
      }
      else if(ch==']'&& stack.peek()=='['){
          stack.pop();
      }
    
      }
    }
      if(stack.empty()){
          System.out.println("YES");
      }
      else{
      System.out.println("No");
      }
      sc.close();
    }
}

###你应该添加else条件打印No if you are neither able to push not如果你两者都不能push not pop. Becau不pop. Bec. 因为在这种情况下,这意味着你有一些额外的右括号这会导致不平衡。

代码:

if (s.length() == 0) { 
      System.out.println("string is empty");
    } else {
      for (int i = 0; i < s.length(); i++) {
        char ch = s.charAt(i);
        if (ch == '(' || ch == '{' || ch == '[') {
          stack.push(ch);
        } else if (ch == ')' && stack.peek() == '(') {
          stack.pop();
        } else if (ch == '}' && stack.peek() == '{') {
          stack.pop();
        } else if (ch == ']' && stack.peek() == '[') {
          stack.pop();
        } else {
          System.out.println("No");
          stack = null;
          break;
        }
      }
    }
    if(stack != null) {
      if (stack.empty()) {
        System.out.println("YES");
      } else {
        System.out.println("No");
      }
    }
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码