华为研发工程师编程题解析:数组周期删除与字符集合
版权申诉
19 浏览量
更新于2024-09-09
收藏 389KB PDF 举报
"这份文档是华为2016年研发工程师面试中的编程题目及答案,包含了两道编程题,一道是关于数组元素删除的问题,另一道是处理字符串中字符集合的题目。"
首先,我们详细分析第一道编程题。题目要求在数组a[N]中,每隔两个数删除一个数,直到只剩下一个数。例如,对于数组{0, 1, 2, 3, 4, 5, 6, 7},按照规则,将依次删除2、5和0,最后剩下的数是7,其原始下标为6。这个问题可以通过遍历数组并使用一个布尔数组`delete[]`来标记要删除的元素实现。代码中,`n`表示数组长度,`delete[]`记录每个元素是否被删除,`count`记录已删除的元素数量,`index`存储最后一个被删除的原始下标。通过一个for循环遍历数组,当找到未删除的元素时,更新`num`计数器,当`num`达到3时,标记当前元素为删除,并更新`index`和`count`。
接下来,我们看第二道编程题。这道题要求接收一个字符串,找出其中所有不重复的字符并打印出来。为了解决这个问题,可以使用Java的`HashSet`数据结构,它是一个不允许有重复元素的集合。代码中,创建一个`HashSet<Character>`实例`set`来存储不重复的字符。通过`Scanner`读取输入的字符串,将其转换为`char[]`,然后遍历数组,使用`set.add()`方法检查字符是否已存在。如果`set.add(c[i])`返回`true`,说明这个字符是第一次出现,将其添加到`set`中,并添加到结果字符串`sb`。最后,`sb.toString()`将给出所有不重复字符的字符串。
这两道题目都体现了编程基础中的数组操作、条件判断、循环控制以及数据结构(如布尔数组和哈希集合)的应用。它们在面试中常用来测试候选人的逻辑思维、问题解决能力和对基本数据结构的理解。通过解决这类问题,工程师可以提升自己的算法设计和实现能力。
2021-08-30 上传
2021-08-30 上传
点击了解资源详情
2021-08-30 上传
2020-05-18 上传
2021-09-14 上传
2021-04-10 上传
2021-07-09 上传
2023-10-11 上传
java李杨勇
- 粉丝: 36w+
- 资源: 3180
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器