面试 | 华为机试练习
均已通过测试用例
部分来源: 牛客网
[TOC]
#
入门#
HJ15: 求 int 型数据在内存中存储时 1 的个数输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
#
简单#
HJ11: 数字颠倒输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有 0,则逆序形式也含有 0,如输入为 100,则输出为 001
#
HJ12: 字符串反转接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过 1000)
#
HJ22: 汽水瓶有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是 5 瓶,方法如下:先用 9 个空瓶子换 3 瓶汽水,喝掉 3 瓶满的,喝完以后 4 个空瓶子,用 3 个再换一瓶,喝掉这瓶满的,这时候剩 2 个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用 3 个空瓶子换一瓶满的还给老板。如果小张手上有 n 个空汽水瓶,最多可以换多少瓶汽水喝?
#
HJ37: 统计每个月兔子的总数斐波那契数列 有一只兔子,从出生后第 3 个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
#
HJ53: iNOC 产品部-杨辉三角的变形1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 1 1 4 10 16 19 16 10 4 1 以上三角形的数阵,第一行只有一个数 1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3 个数之和(如果不存在某个数,认为该数就是 0)。 求第 n 行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入 3,则输出 2,输入 4 则输出 3。
输入 n(n <= 1000000000) 本题有多组输入数据,输入到文件末尾,请使用 while(cin>>)等方式读入
#
HJ56: iNOC 产品部-完全数计算完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。 例如:28,它有约数 1、2、4、7、14、28,除去它本身 28 外,其余 5 个数相加,1+2+4+7+14=28。s 输入 n,请输出 n 以内(含 n)完全数的个数。计算范围, 0 < n <= 500000
本题输入含有多组样例。
#
HJ61: 放苹果题目描述 把 m 个同样的苹果放在 n 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用 K 表示)5,1,1 和 1,5,1 是同一种分法。 数据范围:0<=m<=10,1<=n<=10。 本题含有多组样例输入。
#
HJ62: 查找输入整数二进制中 1 的个数输入一个正整数,计算它在二进制下的 1 的个数。 注意多组输入输出!!!!!!
#
HJ66: 配置文件恢复#
HJ72: 百钱买百鸡问题公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 详细描述: 接口说明 原型: int GetResult(vector &list) 输入参数: 无 输出参数(指针指向的内存区域保证有效): list 鸡翁、鸡母、鸡雏组合的列表 返回值: -1 失败 0 成功
#
HJ73: 计算日期到天数转换根据输入的日期,计算是这一年的第几天。。 测试用例有多组,注意循环输入
#
HJ74: 参数解析问题:
- 无法获取输入?
- js 对'\' 解析?
js?
#
HJ75: 公共字串计算给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。 注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。 ⚠️ 多行读取数据 分析: 与经典 LCS 有区别!!!
#
HJ76: 尼科彻斯定理题目描述 验证尼科彻斯定理,即:任何一个整数 m 的立方都可以写成 m 个连续奇数之和。 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 输入一个正整数 m(m≤100),将 m 的立方写成 m 个连续奇数之和的形式输出。 本题含有多组输入数据。 分析: 连续数列之和 = (start + end) / 2 count n ^ 3 = (x + (x + 2(n -1))) / 2 n 推导出 x = n(n - 1) + 1
#
HJ83: 二维数组操作⚠️ 文字题
#
HJ84: 统计大写字母个数题目描述 找出给定字符串中大写字符(即'A'-'Z')的个数。
#
HJ85: 字符串运用-密码截取(最长回文子串)题目描述 给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 所谓回文串,指左右对称的字符串。 所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 (注意:记得加上 while 处理多个测试用例)
#
HJ86: 求最大连续 bit 数题目描述 求一个 byte 数字对应的二进制数字中 1 的最大连续数,例如 3 的二进制为 00000011,最大连续 2 个 1
#
HJ87: 密码强度等级文字题, 重点考察正则 用 ASCII 码匹配字符, '+'.match(/[\x21-\x2F]/g) ["+"]
#
HJ100: 等差数列题目描述 功能:等差数列 2,5,8,11,14。。。。 输入:正整数 N >0 输出:求等差数列前 N 项和 本题为多组输入,请使用 while(cin>>)等形式读取数据
#
HJ106: 字符逆序题目描述 将一个字符串 str 的内容颠倒过来,并输出。str 的长度不超过 100 个字符。 ⚠️ lines.join(' ') 方式处理输入。
#
HJ108: 求最小公倍数题目描述 正整数 A 和正整数 B 的最小公倍数是指 能被 A 和 B 整除的最小的正整数值,设计一个算法,求输入 A 和 B 的最小公倍数。
#
结构栈#
HJ50: 四则运算#
HJ54: 表达式求值给定一个字符串描述的算术表达式,计算出结果值。 输入字符串长度不超过 100,合法的字符包括”+, -, *, /, (, )”,”0-9”,字符串内容的合法性及表达式语法的合法性由做题者检查。本题目只涉及整型计算。
中缀 转 后缀 参考: 大话数据结构
#
中等#
HJ5: 进值转换题目描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
#
HJ6: 质数因子题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如 180 的质因子为 2 2 3 3 5 ) 最后一个数后面也要有空格 ⚠️ 超时 优化 [2, Math.sqrt(n)], n > 2 时 res.push(n)
#
HJ8: 合并表记录题目描述 数据表记录包含表索引和数值(int 范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照 key 值升序进行输出。
#
HJ9: 提取不重复的整数题目描述 输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。 保证输入的整数最后一位不是 0。
#
HJ10: 字符个数统计题目描述 编写一个函数,计算字符串中含有的不同字符的个数。字符在 ACSII 码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次 例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3。
#
HJ34: 图片整理(字符排序)题目描述 Lily 上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII 码值从小到大)排列收好。
#
HJ14:字符串排序题目描述 给定 n 个字符串,请对 n 个字符串按照字典序排列。 ⚠️ sort 的应用
#
HJ16: 购物单 (动态规划-背包问题)#
HJ21: 简单密码破解#
HJ26: 字符排序#
HJ35: 蛇形矩阵题目描述 蛇形矩阵是由 1 开始的自然数依次排列成的一个矩阵上三角形。 例如,当输入 5 时,应该输出的三角形为: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
#
HJ36: 字符串加密题目描述 有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如 TRAILBLAZERS。如果单词中包含有重复的字母,只保留第 1 个,其余几个丢弃。现在,修改过的那个单词属于字母表的下面,如下所示: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z T R A I L B Z E S C D F G H J K M N O P Q U V W X Y 上面其他用字母表中剩余的字母填充完整。在对信息进行加密时,信息中的每个字母被固定于顶上那行,并用下面那行的对应字母一一取代原文的字母(字母字符的大小写状态应该保留)。因此,使用这个密匙,Attack AT DAWN(黎明时攻击)就会被加密为 Tpptad TP ITVH。 请实现下述接口,通过指定的密匙和明文得到密文。 例子:
igtxbesmnyrehanvuvqhukrtmpynmpdvjlppuq wiumbxibguwicjfyvkznbqzvo // fnlagongslfntyewcrzvgkzcu qrwevoifsrnaxhsuc epvjrscrnsflxxzchappqjc // vbmngjwgujoxttzwfqbbdnw
⚠️ 大小写 arr.splice(startIndex, deletLength) 删除数组元素 arr.splice(startIndex, 0, ele1, ele2,,,) 数组插入元素 'ad'.toLocaleUpperCase() 转大写"AD" 'ER'.toLocaleLowerCase() 转小写"er"
#
HJ38: 求小球落地 5 次后所经历的路程和第 5 次反弹的高度题目描述 假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第 5 次落地时,共经历多少米?第 5 次反弹多高? 最后的误差判断是小数点 6 位 ⚠️ (四舍五入)保留两位位小数 Math.round(height * 100) / 100
#
HJ40: (统计字符)输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数题目描述 输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。 ⚠️ 获取输入拼接 lines.join(' ') ⚠️ 手动测试中"\"、"\/"产生偏差
#
HJ43: 迷宫问题#
HJ45: 名字的漂亮程度题目描述 给出一个名字,该名字有 26 个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。 每个字母都有一个“漂亮度”,范围在 1 到 26 之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。 给出多个名字,计算每个名字最大可能的“漂亮度”。 ⚠️ 理解题意