【华为机试真题 Python实现】括号匹配I

本文介绍了华为机试中关于括号匹配的题目,提供了非最优解的Python实现,强调了机试注意事项,如ACM模式、输入输出处理,并通过示例解释了判断括号匹配的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

《华为机试真题》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。

如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!

欢迎加微信:Ayemmar
加微信请备注 你的CSDN ID

本文解法非最优解(即非性能最优)。

题目描述

编程的时候, if 条件里面的“(”、 “)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行 if 语句中的圆括号是否匹配正确。

同时输出语句中出现的左括号和右括号数量,如 if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1)) 是错误的。

注意 if 语句的最外面至少有一对括号。

提示:用堆栈来做。

特别提醒!!!!
注意1:机试为ACM 模式
你的代码需要处理输入输出࿰

### 华为2025年A卷相关信息 华为OD2025 A卷的考内容主要由历年真题和部分全新题目构成。具体来说,该卷会融合以往E卷、A卷、B卷、C卷、D卷中的经典题,并加入一定数量的新题型[^1]。通常情况下,新题的比例约为总题量的三分之一,而其余三分之二则来源于历史题库。 #### 题目结构分析 根据现有资料推测,2025年的A卷可能会延续以下模式: - **基础算法类**:涉及数组操作、字符串处理等问题,例如查找最大子序列和、判断回文串等。 - **数据结构应用**:考察栈、队列、链表、树等基本数据结构的应用能力,可能包括实现二叉搜索树遍历或哈希表设计等内容。 - **动态规划与贪心策略**:此类问题往往具有较高的难度系数,考生需熟练掌握状态转移方程的设计方法及其优化技巧。 - **图论基础知识**:最短路径计算(如Dijkstra算法)、拓扑排序等相关知识点亦有可能成为测重点之一[^2]。 以下是几个典型的模拟练习实例: ```python # 示例一:寻找两个有序列表合并后的中位数 def findMedianSortedArrays(nums1, nums2): merged = sorted(nums1 + nums2) length = len(merged) if length % 2 != 0: median_index = int((length / 2)) return float(merged[median_index]) else: lower_median_index = int(length / 2) - 1 upper_median_index = int(length / 2) return (merged[lower_median_index] + merged[upper_median_index]) / 2 print(findMedianSortedArrays([1, 3], [2])) # 输出应为2.0 ``` ```java // 示例二:验证括号匹配情况 import java.util.Stack; public class ValidParentheses { public static boolean isValid(String s){ Stack<Character> stack=new Stack<>(); for(char c:s.toCharArray()){ if(c=='(' ||c=='{'||c=='[' ){ stack.push(c); }else{ if(stack.isEmpty())return false; char top=stack.pop(); if(!isMatchingPair(top,c))return false; } } return stack.isEmpty(); } private static boolean isMatchingPair(Character openBracket, Character closeBracket){ if(openBracket.equals('(')&&closeBracket.equals(')'))return true; else if(openBracket.equals('{')&&closeBracket.equals('}'))return true; else if(openBracket.equals('[')&&closeBracket.equals(']'))return true; return false; } public static void main(String[] args){ System.out.println(isValid("(){}[]")); // 应返回true } } ``` ### 备考建议 为了更好地应对此次考,推荐参与官方举办的“华为OD七日集训”,通过系统化的学习提升解题效率和技术水平[^2]。此外,在日常训练过程中注重积累常见算法模板并反复演练高频考点同样至关重要。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不太灵光的程序员

有用的话可以请博主喝杯咖啡续命

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值