算法设计与分析[0023] 秋招华为在线笔试

  昨晚华为在线笔试,三道编程题,结果倒在第二题上,刷了两题半,没能 AK。

第一题

 第一题是括号(“(”、“[”、“{”)匹配,想法也比较简单,就通过栈stack模拟,遇到开括号推入堆栈,每当遇到闭括号(“)”、“]”、“}”),就进行配对,满足配对就将栈顶的开括号弹出。假如最终的栈是空的,说明输入表达式不存在括号或者括号能够完全匹配。
 需要注意的是:①满足配对并不是stack.top()==inputStr[currentIdx],而需要分上述三种括号进行一一配对;②当存在闭括号,但栈为空或者栈顶元素并不是配对的开括号,已经能够证明输入表达式括号不匹配了,此时可以跳出循环。