当前位置:   article > 正文

牛客网华为软件测试题库,牛客网华为机试题答案_牛客网软件测试题库

牛客网软件测试题库

大家好,本文将围绕牛客网华为软件测试题库展开说明,牛客网华为机试题答案是一个很多人都想弄明白的事情,想搞清楚华为牛客网的笔试难吗需要先了解以下几个事情。

Source code download: 本文相关源码

前言

牛客网华为机试(https://www.nowcoder.com/exam/oj/ta?tpId=37)
按难度分为入门,简单,中等,困难,较难五个等级

一,入门

HJ7 取近似值

  1. n = float(input())
  2. res = lambda x:int(x+0.5)
  3. print(res(n))

HJ9 提取不重复的整数
提取到输入字符串后就对其进行倒置,排序时直接按ls1的顺序进行排列

  1. ls1 = list(input()[::-1])
  2. ls2 = list(set(ls1))
  3. ls2.sort(key=ls1.index)
  4. print(int(''.join(ls2)))

HJ46 截取字符串
字符串切片

  1. str1 = input()
  2. n = int(input())
  3. print(str1[:n])

HJ58 输入n个整数,输出其中最小的k个
map()函数是为了初始化n,k以及列表中的str类型为int类型
最后输出的*nums[:k]是对num[:k]的解包。

  1. n, k = map(int, input().split())
  2. nums = sorted(list(map(int, input().split())))
  3. print(*nums[:k])

HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序
依然是map()函数转化类型,sort()函数排序,*解包列表用python画雪

  1. n = int(input())
  2. ls1 = list(map(int,input().split()))
  3. flag = int(input())
  4. if flag == 0:
  5. ls1.sort()
  6. print(*ls1)
  7. elif flag == 1:
  8. ls1.sort(reverse=True)
  9. print(*ls1)

二,简单

HJ1 字符串最后一个单词的长度

  1. ls1 = input().split()
  2. print(len(ls1[-1]))

HJ2 计算某字符出现次数
count函数

  1. str1 = input()
  2. str2 = input()
  3. print(str1.lower().count(str2.lower()))

Counter类

  1. from collections import Counter
  2. str1 = input().lower()
  3. str2 = input().lower()
  4. s = Counter(str1)
  5. if str2 in str1:
  6. print(s.get(str2))
  7. else:
  8. print('0')

for循环

  1. str1 = input().lower()
  2. str2 = input().lower()
  3. count = 0
  4. for i in str1:
  5. if str2 == i:
  6. count+=1
  7. print(count)

HJ4 字符串分隔
ljust()函数是一个填充函数,str1.ljust(8,“0”)是指让str1靠左对齐,不足8位时剩下的用0填充

  1. str1 = input()
  2. while len(str1)>8:
  3. print(str1[:8])
  4. str1 = str1[8:]
  5. print(str1.ljust(8,"0"))

HJ5 进制转换
十六进制转10进制

  1. str1 = input()
  2. print(int(str1,16))

HJ6 质数因子
给一个整数求其质因子,180 = 22335,2 2 3 3 5就是180的质因子
1没有质因子,2的质因子是本身
math.sqrt(n)是一个数开平方,一个数的质数最小为2,最大也不超过平方根
%是取余,//是整除

  1. import math
  2. n = int(input())
  3. for i in range(2,int(math.sqrt(n))+1):
  4. while n%i == 0:
  5. print(i,end=' ')
  6. n = n//i
  7. if n >= 2:
  8. print(n,end=' ')

HJ8 合并表记录
dicc[i] = dicc.get(i,0) + j 的意思是向dicc中的键 i 取值,取不到就意味着该键不存在并获取到默认值0,所以dicc[i] = 0+j 。如果键 i 存在,取出值假如为10,所以重新给dicc[i]赋值10+j
sorted(dict) 操作字典类型也是返回一个列表,但是默认是键的递增列表。

  1. num = int(input())
  2. dicc = {}
  3. for n in range(num):
  4. i,j = list(map(int,input().split()))
  5. dicc[i] = dicc.get(i,0) + j
  6. for k in sorted(dicc):
  7. print(f'{k} {dicc[k]}')

HJ10 字符个数统计

  1. str1 = input()
  2. print(len(set(str1.replace('\n',''))))

HJ11 数字颠倒
数字颠倒用字符串切片很容易做到
下面是用数组来做的,思路是计算出str(num)的长度,把字符串后面的字符添加到列表前面来,然后输出

  1. nums = str(input())
  2. i = len(nums) - 1
  3. ans = []
  4. while i>=0:
  5. ans.append(nums[i])
  6. i-=1
  7. res = ''.join(ans)
  8. print(res)

HJ12 字符串反转

  1. str1 = str(input())
  2. print(str1[::-1])

HJ13 句子逆序
切片倒置列表

  1. list = input().split()
  2. print(' '.join(list[::-1]))

reserve()函数倒置列表

  1. list = input().split()
  2. list.reverse()
  3. print(' '.join(list))

HJ14 字符串排序

  1. n = int(input())
  2. lst = []
  3. for i in range(n):
  4. lst.append(str(input()))
  5. lst.sort()
  6. for i in lst:
  7. print(i)

HJ15 求int型正整数在内存中存储时1的个数
这实际上是一个十进制转化二进制,然后求字符串中某个字符的出现次数

  1. n = int(input())
  2. n = bin(n)
  3. print(n.count('1'))

当然也可以换进制转换的方法和字符出现次数的方法

  1. n = int(input())
  2. lst = []
  3. while n != 0:
  4. lst.append(n%2)
  5. n = n//2
  6. count = 0
  7. for i in lst:
  8. if i==1:
  9. count+=1
  10. print(count)

HJ21 简单密码

  1. str1 = str(input())
  2. dicc = {
  3. 'abc':2,
  4. 'def':3,
  5. 'ghi':4,
  6. 'jkl':5,
  7. 'mno':6,
  8. 'pqrs':7,
  9. 'tuv':8,
  10. 'wxyz':9,
  11. }
  12. lst = []
  13. for i in str1:
  14. if i.isdigit():
  15. lst.append(int(i))
  16. elif i.isupper():
  17. if i == "Z":
  18. i = "a
  19. else:
  20. i = chr(ord(i.lower())+1)
  21. lst.append(i)
  22. elif i.islower():
  23. for j in dicc.keys():
  24. if str(i) in j:
  25. i = dicc[j]
  26. lst.append(i)
  27. print(''.join(map(str,lst)))

HJ22 汽水瓶
两个汽水瓶也可以换一瓶汽水,最后不会剩汽水瓶。
思路:拿两个空瓶,借一个商家的空瓶,换一瓶汽水,喝完后再还给商家一个空瓶,相当于用两个空瓶换一瓶汽水,然后什么也没有得到。

  1. for i in range(10):
  2. n = int(input())
  3. if n==0:
  4. break
  5. print(n//2)

三个汽水瓶可以换一瓶汽水,然后获得一个空瓶,最后剩余两个汽水瓶一定可以换一瓶汽水。
下面这个思路是:每次都以三个空瓶换一瓶汽水,然后得到一个空瓶,计算出最后总空瓶数,然后循环,最后剩余两个汽水瓶就再换一个,否则直接输出循环的结果。

  1. #count_1 换到的汽水
  2. #count_2 汽水瓶
  3. #count_3 喝到的汽水
  4. for i in range(10):
  5. count_3 = 0
  6. n = int(input())
  7. if n == 0:
  8. break
  9. while n > 2:
  10. count_1 = n//3
  11. count_2 = n%3
  12. count_3 = count_3 + count_1
  13. n = count_1 + count_2
  14. if n == 2:
  15. count_3+=1
  16. print(count_3)

HJ23 删除字符串中出现次数最少的字符
先求出字符出现次数,删除最少的字符,然后按原来的顺序把字符重新输出为字符串.
思路:求出字符出现次数,然后写入字典,求出字典值的最小值,循环原字符串,除了出现最少的字符,其他都输出。

  1. str1 = input()
  2. lst = set(list(str1))
  3. dicc = {}
  4. for i in lst:
  5. dicc[i] = str1.count(i)
  6. MIN = min(dicc.values())
  7. res = ''
  8. for i in str1:
  9. if dicc[i] != MIN:
  10. res += i
  11. print(res)

HJ31 单词倒排
匹配字符串中的单词到列表里,然后倒置用join()方法变为字符串输出。
思路:正则表达式匹配出单词,然后倒置即可

  1. import re
  2. str1 = input()
  3. lst1 = re.findall(r'\b[a-zA-Z]+\b',str1)
  4. print(*lst1[::-1])
  5. #print(*lst1[::-1]) 解包方法

HJ34 图片整理

  1. str1 = input()
  2. lst = list(str1)
  3. lst.sort(key=ord)
  4. print(''.join(lst))
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/441521
推荐阅读
相关标签
  

闽ICP备14008679号