华为机试C++
牛客中华为机试中以C++语言实现的题解汇总
画弋
Comrades
展开
-
牛客-华为机试-中等-栈-HJ77火车进站-C++?
给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的出站了,先进站的才能出站。进阶:时间复杂度:O(n!) ,空间复杂度:O(n) O(n)第一种方案:1进、1出、2进、2出、3进、3出。第二种方案:1进、1出、2进、3进、3出、2出。第三种方案:1进、2进、2出、1出、3进、3出。第四种方案:1进、2进、2出、3进、3出、1出。第五种方案:1进、2进、3进、3出、2出、1出。原创 2023-11-15 11:25:49 · 49 阅读 · 0 评论 -
牛客-华为机试-入门-基础数学-HJ9 提取不重复的整数-C++
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。去重用数组/哈希/set(有序),本题不适用。保证输入的整数最后一位不是 0。数据范围: 1≤n≤108。输入一个int型整数。原创 2023-11-07 20:02:43 · 44 阅读 · 0 评论 -
牛客-华为机试-入门-数组 排序-HJ58 输入n个整数,输出其中最小的k个-C++
数据范围:1≤n≤1000 1≤n≤1000 ,输入的整数满足 1≤val≤10000 1≤val≤10000。输入n个整数,找出其中最小的k个整数并按升序输出。从小到大输出最小的k个整数,用空格分开。第一行输入两个整数n和k。第二行输入一个整数数组。原创 2023-11-07 20:10:42 · 32 阅读 · 0 评论 -
牛客-华为机试-入门-字符串 模拟-HJ46 截取字符串-C++
输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出。数据范围:字符串长度满足 1≤n≤1000,1≤k≤n。2.输入一个正整数k,代表截取的长度。1.输入待截取的字符串。原创 2023-11-07 20:22:20 · 45 阅读 · 0 评论 -
牛客-华为机试-入门-排序-HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序-C++
数据范围: 1≤n≤1000,元素大小满足 0≤val≤100000。第三行输入一个整数0或1。0代表升序排序,1代表降序排序。输入整型数组和排序标识,对其元素按照升序或降序进行排序。第二行输入待排序的数组,每个数用空格隔开。第一行输入数组元素个数。原创 2023-11-07 20:31:55 · 50 阅读 · 0 评论 -
牛客-华为机试-简单-字符串-HJ1 字符串最后一个单词的长度-C++
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)输入一行,代表要计算的字符串,非空,长度小于5000。输出一个整数,表示输入字符串最后一个单词的长度。最后一个单词为nowcoder,长度为8。原创 2023-11-07 20:39:06 · 33 阅读 · 0 评论 -
牛客-华为机试-简单-字符串 数组-HJ2 计算某字符出现次数-C++
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。输出输入字符串中含有该字符的个数。(不区分大小写字母)数据范围: 1≤n≤1000 1≤n≤1000。原创 2023-11-07 20:51:25 · 49 阅读 · 0 评论 -
牛客-华为机试-简单-字符串-HJ4 字符串分隔-C++
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。连续输入字符串(每个字符串长度小于等于100)依次输出所有分割后的长度为8的新字符串。原创 2023-11-08 07:08:23 · 55 阅读 · 0 评论 -
牛客-华为机试-简单-字符串-HJ5-进制转换-C++
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。输出该数值的十进制字符串。不同组的测试用例用\n隔开。数据范围:保证结果在 1≤n≤231−1。输入一个十六进制的数值字符串。原创 2023-11-08 07:40:41 · 129 阅读 · 0 评论 -
华为-牛客机试-简单-字符串 哈希-HJ10-字符个数统计-C++
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3。输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。计数用unordered_map的size()数据范围: 1≤n≤500 1≤n≤500。去重用数组/哈希/(set)有序。输入一行没有空格的字符串。原创 2023-11-10 14:41:11 · 88 阅读 · 1 评论 -
牛客-华为机试-简单-字符串-HJ11数字颠倒-C++
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3。输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。数据范围: 1≤n≤500。输入一行没有空格的字符串。原创 2023-11-10 14:45:57 · 62 阅读 · 1 评论 -
牛客-华为机试-简单-字符串-HJ12字符串反转/HJ106字符逆序-C++
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)输入一行,为一个只包含小写字母的字符串。输出该字符串反转后的字符串。原创 2023-11-10 14:51:09 · 38 阅读 · 1 评论 -
牛客-华为机试-简单-字符串 排序-HJ14字符串排序-C++
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。数据范围: 1≤n≤1000,字符串长度满足 1≤len≤100。给定 n 个字符串,请对 n 个字符串按照字典序排列。数据输出n行,输出结果为按照字典序排列的字符串。原创 2023-11-10 15:03:09 · 41 阅读 · 1 评论 -
牛客-华为机试-简单-字符串 模拟-HJ21 简单密码-C++
九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a。数据范围: 输入的字符串长度满足 1≤n≤100 1≤n≤100。输入一组密码,长度不超过100个字符。原创 2023-11-10 15:07:17 · 53 阅读 · 1 评论 -
牛客-华为机试-简单-字符串 数组-HJ23删除字符串中出现次数最少的字符-C++
实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。数据范围:输入的字符串长度满足 1≤n≤20 1≤n≤20 ,保证输入的字符串中仅出现小写字母。字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。删除字符串中出现次数最少的字符后的字符串。原创 2023-11-10 15:09:35 · 46 阅读 · 1 评论 -
牛客-华为机试-简单-排序 字符串-HJ31单词倒排/HJ13句子逆序-C++
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;数据范围:字符串长度满足 1≤n≤10000 1≤n≤10000。1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词间隔符;对字符串中的所有单词进行倒排。4、每个单词最长20个字母;输入一行,表示用来倒排的句子。原创 2023-11-11 06:28:24 · 56 阅读 · 1 评论 -
牛客-华为机试-简单-字符串 排序-HJ34图片整理-C++
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。Lily使用的图片使用字符"A"到"Z"、"a"到"z"、"0"到"9"表示。一行,一个字符串,字符串中的每个字符表示一张Lily使用的图片。数据范围:每组输入的字符串长度满足 1≤n≤1000。Lily的所有图片按照从小到大的顺序输出。原创 2023-11-11 06:32:56 · 51 阅读 · 1 评论 -
牛客-华为机试-简单-字符串-HJ40统计字符-C++
数据范围:输入的字符串长度满足 1≤n≤1000 1≤n≤1000。输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。统计其中英文字符,空格字符,数字字符,其他字符的个数。输入一行字符串,可以有空格。原创 2023-11-11 06:36:38 · 55 阅读 · 1 评论 -
牛客-华为机试-简单-字符串 基础数学 栈-HJ54表达式求值/HJ50四则运算-C++
输入字符串长度不超过 100 ,合法的字符包括 ”+, -, *, /, (, )” , ”0-9”。数据范围:运算过程中和最终结果均满足 ∣val∣≤231−1,即只进行整型运算,确保输入的表达式合法。给定一个字符串描述的算术表达式,计算出结果值。原创 2023-11-11 06:43:50 · 98 阅读 · 1 评论 -
牛客-华为机试-简单-字符串 思维-HJ73计算日期到天数转换-C++
进阶:时间复杂度:O(n) O(n) ,空间复杂度:O(1) O(1)输入一行,每行空格分割,分别是年,月,日。根据输入的日期,计算是这一年的第几天。保证年份为4位数且日期合法。输出是这一年的第几天。原创 2023-11-11 07:30:06 · 28 阅读 · 0 评论 -
牛客-华为机试-简单-字符串 数组-HJ81 字符串字符匹配-C++
如果短字符串的所有字符均在长字符串中出现过,则输出字符串"true"。否则输出字符串"false"。数据范围:1≤len(S),len(T)≤200 1≤len(S),len(T)≤200。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。进阶:时间复杂度:O(n) O(n) ,空间复杂度:O(n) O(n)判断短字符串S中的所有字符是否在长字符串T中全部出现。其中abc含有bc,输出"true"请注意本题有多组样例输入。原创 2023-11-11 07:33:06 · 30 阅读 · 0 评论 -
牛客-华为机试-简单-字符串-HJ84统计大写字母个数-C++
找出给定字符串中大写字符(即'A'-'Z')的个数。进阶:时间复杂度:O(n),空间复杂度:O(n)对于每组样例,输入一行,代表待统计的字符串。数据范围:字符串长度:1≤∣s∣≤250。输出一个整数,代表字符串中大写字母的个数。字符串中可能包含空格或其他字符。原创 2023-11-11 07:35:56 · 38 阅读 · 0 评论 -
牛客-华为机试-简单-字符串-HJ85最长回文子串/HJ32密码截取-C++
所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串。给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。进阶:时间复杂度:O(n),空间复杂度:O(n)数据范围:字符串长度1≤s≤350。所谓回文串,指左右对称的字符串。输入一个仅包含小写字母的字符串。abba为最长的回文子串。返回最长回文子串的长度。原创 2023-11-11 07:38:28 · 33 阅读 · 0 评论 -
牛客-华为机试-简单-字符串 模拟-HJ87密码强度等级-C++
样例的密码长度大于等于8个字符,得25分;由于该密码包含大小写字母、数字和符号,所以奖励部分得5分,经统计得该密码的密码强度为25+20+20+25+5=95分。"#$%&'()*+,-./ (ASCII码:0x21~0x2F){|}~ (ASCII码:0x7B~0x7E)示例2的密码强度为10+20+0+25+0=55分。10 分: 密码里的字母全都是小(大)写字母。20 分: 密码里的字母符合”大小写混合“>= 0: 非常弱(Very_Weak)原创 2023-11-11 07:41:06 · 42 阅读 · 0 评论 -
牛客-华为机试-简单-字符串 模拟-HJ96表示数字-C++
将一个字符串中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。数据范围:字符串长度满足 1≤n≤100 1≤n≤100。字符中所有出现的数字前后加上符号“*”,其他字符保持不变。原创 2023-11-11 07:56:21 · 26 阅读 · 0 评论 -
牛客-华为机试-简单-字符串 排序 哈希-HJ102字符统计-C++
输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,最后输出a.数据范围:字符串长度满足 1≤len(str)≤1000 1≤len(str)≤1000。一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。一个只包含小写英文字母和数字的字符串。原创 2023-11-11 08:00:28 · 50 阅读 · 0 评论 -
牛客-华为机试-简单-基础数学-HJ6质数因子-C++
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )按照从小到大的顺序输出它的所有质数的因子,以空格隔开。数据范围: 1≤n≤2×109+14。原创 2023-11-11 08:02:54 · 40 阅读 · 0 评论 -
牛客-华为机试-简单-排序-HJ80整型数组合并-C++
将两个整型数组按照升序合并,并且过滤掉重复数组元素。输出时相邻两数之间没有空格。1 输入第一个数组的个数。2 输入第一个数组的数值。3 输入第二个数组的个数。4 输入第二个数组的数值。原创 2023-11-11 09:18:47 · 54 阅读 · 0 评论 -
牛客-华为机试-简单-模拟-HJ22汽水瓶-C++
输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板。某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。输入的 0 表示输入结束,并不用输出结果。样例 1 解释:用三个空瓶换一瓶汽水,剩一个空瓶无法继续交换。原创 2023-11-12 07:52:05 · 41 阅读 · 0 评论 -
牛客-华为机试-简单-查找 排序-HJ37统计每个月兔子的总数-C++
有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?数据范围:输入满足 1≤n≤31。输入一个int型整数表示第n个月。原创 2023-11-12 07:54:12 · 49 阅读 · 0 评论 -
牛客-华为机试-简单-模拟 递归-HJ61放苹果-C++
注意:如果有7个苹果和3个盘子,(5,1,1)和(1,5,1)被视为是同一种分法。的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?数据范围:0≤m≤10,1≤n≤10。原创 2023-11-12 07:59:05 · 35 阅读 · 0 评论 -
牛客-华为机试-简单-基础数学-HJ53杨辉三角的变形-C++
以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。数据范围: 1≤n≤109 1≤n≤109。原创 2023-11-12 10:51:23 · 41 阅读 · 0 评论 -
牛客-华为机试-简单-数组-HJ35蛇形矩阵-C++
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。输入正整数N(N不大于100)输出一个N行的蛇形矩阵。原创 2023-11-12 10:56:15 · 42 阅读 · 0 评论 -
牛客-华为机试-简单-基础数学-HJ56完全数计算-C++
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。数据范围: 1≤n≤5×105 1≤n≤5×105。输入n,请输出n以内(含n)完全数的个数。输出不超过n的完全数的个数。原创 2023-11-12 11:17:51 · 37 阅读 · 0 评论 -
牛客-华为机试-简单-查找 基础数学 穷举-HJ60查找组成一个偶数最接近的两个素数-C++
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。数据范围:输入的数据满足 4≤n≤1000。输入一个大于2的偶数。从小到大输出两个素数。原创 2023-11-12 11:21:12 · 37 阅读 · 0 评论 -
牛客-华为机试-简单-基础数学-HJ100等差数列-C++
数据范围: 1≤n≤1000 1≤n≤1000。等差数列 2,5,8,11,14。(从 2 开始的 3 为公差的等差数列)输出求等差数列前n项和。输出一个相加后的整数。原创 2023-11-12 11:23:55 · 37 阅读 · 0 评论 -
牛客-华为机试-简单-基础数学-HJ108求最小公倍数-C++
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。数据范围:1≤a,b≤100000。输出A和B的最小公倍数。输入两个正整数A和B。原创 2023-11-12 11:26:26 · 28 阅读 · 0 评论 -
牛客-华为机试-简单-递归-HJ91走方格的方案数
请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。输入两个正整数n和m,用空格隔开。数据范围: 1≤n,m≤8 1≤n,m≤8。注:沿棋盘格之间的边缘线行走。原创 2023-11-12 11:33:25 · 21 阅读 · 0 评论 -
牛客-华为机试-简单-基础数学-HJ76尼科彻斯定理-C++
输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。进阶:时间复杂度:O(m),空间复杂度:O(1)数据范围:1≤m≤100。输出分解后的string。原创 2023-11-12 11:29:57 · 77 阅读 · 0 评论 -
牛客-华为机试-简单-查找 哈希-HJ94记票统计-C++
按照输入的顺序,每行输出候选人的名字和得票数量(以" : "隔开,注:英文冒号左右两边都有一个空格!数据范围:每组输入中候选人数量满足 1≤n≤100 1≤n≤100 ,总票数量满足 1≤n≤100 1≤n≤100。第一行输入候选人的人数n,第二行输入n个候选人的名字(均为大写字母的字符串),第三行输入投票人的人数,第四行输入投票。请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。(注:不合法的投票指的是投票的名字不存在n个候选人的名字中!原创 2023-11-12 11:36:27 · 39 阅读 · 0 评论