Java代码解决表达式合法性判断与公交路线优化问题

版权申诉
0 下载量 153 浏览量 更新于2024-09-09 收藏 574KB PDF 举报
"去哪儿2016研发工程师编程题及答案.pdf 包含两道编程题目,第一题是检查一个包含特定括号的表达式是否合法,第二题涉及计算在多条公交线路中选择最早到达公司的策略。" 编程题一:括号匹配问题 这个编程题目的目标是编写一个函数来检查输入的字符串是否包含正确配对的括号。给定的示例代码是用Java编写的,核心逻辑在于使用栈数据结构来实现。以下是代码的详细解释: 1. 初始化一个空的`StringBuilder`对象`sb`来存储输入表达式。 2. 获取输入字符串`A`的长度,用于遍历整个字符串。 3. 创建一个`Stack<Character>`对象`s`来存储遇到的左括号。 4. 遍历字符串,如果遇到左括号('{'、'['、'('),将它们压入栈中。 5. 如果遇到右括号('}'、']'、')'),检查栈顶元素是否为其对应的左括号,如果是则弹出栈顶元素。如果不是或栈为空,则表达式非法。 6. 完成遍历后,如果栈为空,说明所有括号都已正确配对,返回`true`;否则,返回`false`。 编程题二:公交线路选择问题 这是一道关于路径规划和调度的题目。题目要求计算在多条公交线路中,给定每条线路的停站数、停站时间和发车间隔,以及起始出发时间,找出能让乘客最早到达目的地的公交线路。以下是解决问题的策略: 1. 针对每一条公交线路,根据停站数、停站时间和发车间隔,计算出从起点到终点的总时间。假设相邻两站间的行驶时间为5分钟,停站时间固定,发车间隔也是固定的。 2. 对于每条线路,从乘客的起床时间开始,按照发车间隔计算可能的发车时间,并计算到达公司的时间。 3. 记录下所有线路中最早的到达时间,并找到对应的线路编号。 4. 遍历完所有线路后,返回最早到达时间。 由于题目限制了公交线路数不超过500条,停站数不超过50个,因此可以使用简单的循环和条件判断来解决这个问题。实际的代码实现需要填写在注释中的`writecodehere`位置,使用一个循环遍历所有线路,计算并比较到达时间。 这两个编程题目都考察了基础的数据结构(如栈)和算法(如路径规划)的理解与应用,同时也涉及到了实际问题的求解策略。对于研发工程师来说,这类问题的解决能力是非常重要的。