package com.company.algorithm.A20211126;
public class Structure {
// 先进先出 队列
private static class Q {
int head;
int tail;
int[] data = new int[101];
}
// 将队列第一个数删除第二个数放在最后,依次循环到队列没有数据为止,删除掉的数字顺序是新的结果
private static void QueueTest() {
Q q = new Q();
int[] d = {0,6,3,1,7,5,8,9,2,4};
int[] res = new int[d.length];
int cur = 1;
for (int i = 1; i < d.length; i++) {
q.data[i] = d[i];
}
q.head = 1;
q.tail = 10;
while (q.head < q.tail) {
res[cur++] = q.data[q.head];
q.head++;
q.data[q.tail++] = q.data[q.head];
q.head++;
}
for (int i = 1; i < res.length; i++) {
System.out.print(res[i]);
}
}
// 先进后出 栈
private static void huiWen() {
// String str = "{}{[([])]()}";
// String str = "{{[()()}]}";
String str = "{{}[{( )}]}()";
int top = -1, idx = 0;
StringBuilder sb = new StringBuilder();
while (idx < str.length()) {
while (sb.length() > 0) {
if(sb.charAt(top) == '{' && str.charAt(idx) == '}') {
sb.deleteCharAt(top);
top--;
idx++;
}
else if(sb.charAt(top) == '[' && str.charAt(idx) == ']') {
sb.deleteCharAt(top);
top--;
idx++;
}
else if(sb.charAt(top) == '(' && str.charAt(idx) == ')') {
sb.deleteCharAt(top);
top--;
idx++;
} else break;
}
if(idx < str.length()) {
sb.append(str.charAt(idx));
top++;
idx++;
}
}
System.out.println(top == -1);
}
public static void main(String[] args) {
//QueueTest();
huiWen();
}
}