####上周面试了一个公司,不出意外的挂在了算法上,不过相比之前这次面试挂的更惨,一道FIFO的面试题。

下面来看看这道面试题:
题目要求:
   输入: "()())()" 输出: ["()()()", "(())()"]
   示例 2:
   输入: "(a)())()"
   输出: ["(a)()()", "(a())()"]
   示例 3:
   输入: ")("
   输出: [""]

#####当看到这道题,视乎很简单,不出意外的必然的我采用了遍历。
######一大堆遍历,之后我发现,越来越多的问题,根本无法解决,代码越写越多,问题随之越多。
######当然不出意外的我也挂了。

###回家后一番百度,顿时茅塞顿开,原来如此。这也是leecode上的题,具体解法如下:

      public static void main(String[] args) {
            String s = "(()){}[][";
            Stack<String> stack = new Stack<>();
    
            char[] chs = s.toCharArray();
            for (char c : chs) {
                switch (String.valueOf(c)) {
                    case "[":
                        stack.push("[");
                        break;
                    case "]":
                        if (stack.empty()) {
                            return false;
                        }
                        if (!stack.pop().equals("[")) {
                            return false;
                        }
                        break;
                    case "(":
                        stack.push("(");
                        break;
                    case ")":
                        if (stack.empty()) {
                            return false;
                        }
                        if (!stack.pop().equals("(")) {
                            return false;
                       }
                        break;
                    case "{":
                        stack.push("{");
                        break;
                    case "}":
                        if (stack.empty()) {
                            return false;
                        }
                        if (!stack.pop().equals("{")) {
                            return false;
                        }
                        break;
                }
            }
            if (stack.empty()) {
                return true;
            }
            return false;
        }

###面试总结:
面对为题一定要细心,分析