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());
}
腾讯成长空间 1100人发布