####上周面试了一个公司,不出意外的挂在了算法上,不过相比之前这次面试挂的更惨,一道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;
}
###面试总结:
面对为题一定要细心,分析