4.17 华为笔试 第一题
第一题不知道咋回事只通过20%,佬们可以帮忙看看嘛。
破案了,考试时提交的代码是直接pop然后反转,导致10翻转成01了
StringBuilder stringBuilder = new StringBuilder(); while(!stack.isEmpty()) { stringBuilder.append(stack.pop()).append(" "); } System.out.print(stringBuilder.reverse().toString().trim());
以下应该是正确的代码:
public void solve1() { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); String[] cards = sc.nextLine().split(" "); Deque<String> stack = new LinkedList<>(); for (int i = 0; i < n; i++) { if(stack.size() >= 2 && stack.peek().equals(cards[i])) { String pop1 = stack.pop(); if(stack.peek().equals(cards[i])) { stack.pop(); } else { stack.push(pop1); stack.push(cards[i]); } } else { stack.push(cards[i]); } } if(stack.isEmpty()) { System.out.print(0); return; } StringBuilder stringBuilder = new StringBuilder(); while(!stack.isEmpty()) { stringBuilder.append(stack.removeLast()).append(" "); } System.out.print(stringBuilder.toString().trim()); }