「解析」牛客网-华为机考企业真题 1-20

news/2024/11/19 23:33:50/

又是一年春招时,有幸收到华为自动驾驶算法岗,之前刷题不多,在此汇总下牛客网的真题,主要采用Python编写,个人觉得语言只是实现工具而已,并不是很关键,Python简洁易懂,更加适合算法工程师快速验证idear,避免重复造轮子的繁琐,希望对看合集的你有些许帮助!

  1. 「解析」牛客网-华为机考企业真题 1-20
  2. 「解析」牛客网-华为机考企业真题 21-40
  3. 「解析」牛客网-华为机考企业真题 41-60
  4. 「解析」牛客网-华为机考企业真题 61-80
  5. 「解析」牛客网-华为机考企业真题 81-108

文章目录

  • HJ1 字符串最后一个单词的长度
  • HJ2 计算某字符出现次数
  • HJ3 明明的随机数
  • HJ4 字符串分隔
  • HJ5 进制转换
  • ★ HJ6 质数因子
  • HJ7 取近似值
  • ★ HJ8 合并表记录
  • HJ9 提取不重复的整数
  • HJ10 字符个数统计
  • HJ11 数字颠倒
  • HJ12 字符串反转
  • HJ13 句子逆序
  • HJ14 字符串排序
  • HJ15 求int型正整数在内存中存储时1的个数
  • HJ16 购物单
  • HJ17 坐标移动
  • ★★★ HJ18 识别有效的IP地址和掩码并进行分类统计
  • HJ19 简单错误记录
  • HJ20 密码验证合格程序

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

在这里插入图片描述
Python 读取输入信息 input() ,通过 .split() 进行切分,计算最后一个单词的长度

string = input()
str_lst = string.split(" ")
print(len(str_lst[-1]))

HJ2 计算某字符出现次数

在这里插入图片描述

因为不考虑大小写情况,可以考虑采用 .upper() / .lower() 将字符串全部转化为 大写/小写

string = input().lower()
check  = input().lower()num = string.count(check)
print(num)

HJ3 明明的随机数

在这里插入图片描述
需要注意一点,输入的不仅有 随机数的个数,还有具体的随机数[此随机数不是自己生成的,而是需要输入的,并且是多行输入,需要循环读取输入]

n = input()
lst = []
for i in range(int(n)):lst.append(int(input()))ulst = set(lst)for j in sorted(ulst):print(j)

HJ4 字符串分隔

在这里插入图片描述

重点在于如何在字符串后面补数字0,博主采用的字符串拼接

string = input()num = len(string)num_1 = num //8
num_2 = num % 8for i in range(num_1 ):print(string[i * 8: i * 8+8 ])		# 8 -> 8+8 共8个数,即0-7
if num_2 != 0:lst = string[-num_2:] + (8-num_2) * "0"print(lst)

Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。

str.ljust(width[, fillchar])width -- 指定字符串长度。fillchar -- 填充字符,默认为空格。# ---------------------------------------------- #
temp = input()while(len(temp)>0):print(temp[:8].ljust(8,"0"))temp = temp[8:]

HJ5 进制转换

在这里插入图片描述

Python 的 int 可以进行进制转换,进制为传入参数的进制,统一返回10进制

int()函数可以实现将数字或字符转为整数,如果是实数,则只取整数部分
当输入字符包含了如下字符:0x(十六进制标志)、0o(八进制标志)、0b(二进制标志), int函数的第二个参数必须为0
0x(十六进制标志)、0o(八进制标志)、0b(二进制标志)
调用函数otc函数,转换为八进制
采用自带函数bin获取

num = input()
print(int(num, 16))

★ HJ6 质数因子

在这里插入图片描述

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

HJ7 取近似值

在这里插入图片描述

通过 int 函数进行转换,

inp = float(input())
print(int(inp + 0.5))		# 0.5 向上取整# ------------------------------------------------------ #
from math import ceil, floordef ceilNumber(n):a = ceil(n)-n			# ceil 向上取整if (a<0.5):return ceil(n)return floor(n)			# floor 向下取整b = float(input())print(ceilNumber(b))

★ HJ8 合并表记录

在这里插入图片描述

n = int(input())
dic = {}# idea: 动态建构字典
for i in range(n):line = input().split()key = int(line[0])value = int(line[1])dic[key] = dic.get(key, 0) + value  # 累积key所对应的valuefor each in sorted(dic):  # 最后的键值对按照升值排序print(each, dic[each])

HJ9 提取不重复的整数

在这里插入图片描述

通过 print(i, end=“”) 将结果输出,且不换行

inp = input()num = inp[::-1]
out = []for i in num:if i in out:continueelse:out.append(i)print(i, end="")

HJ10 字符个数统计

在这里插入图片描述

ord()函数是chr()函数(对于8位的ASCII字符串)或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值,如果所给的Unicode字符超出了你的Python定义范围,则会引发一个TypeError的异常。

def count_character(str):string = ''.join(set(str))  	# 去重后以字符串的形式count = 0                   	# 开始计数for item in string:if 0 <= ord(item) <= 127: 	# ASCII码范围要求count += 1         		# 计数return countstr = input()
print(count_character(str))

偷懒的做法,直接替换掉 换行符,计算 set 集合数值

print(len(set(input().replace('\n',''))))						# 方法二
print(len(set(map(lambda x: x, input().replace('\n','')))))		# 方法三

HJ11 数字颠倒

在这里插入图片描述

num = input()out = num[::-1]for i in range(len(out)):print(out[i], end="")# ------------------------------------ #
print(input()[::-1])

HJ12 字符串反转

在这里插入图片描述

print(input()[::-1])

HJ13 句子逆序

在这里插入图片描述

string = input()lst = string.split()[::-1]for i in lst:print(i ,end=' ')

HJ14 字符串排序

在这里插入图片描述

num=int(input())stack=[]for i in range(num):stack.append(input())print("\n".join(sorted(stack)))

HJ15 求int型正整数在内存中存储时1的个数

在这里插入图片描述

num =  input()num_b = bin(int(num))out = str(num_b).count("1")
print(out)

HJ16 购物单

在这里插入图片描述

n, m = map(int,input().split())
primary, annex = {}, {}
for i in range(1,m+1):x, y, z = map(int, input().split())if z==0:primary[i] = [x, y]else:if z in annex:annex[z].append([x, y])else:annex[z] = [[x,y]]
dp = [0]*(n+1)
for key in primary:w, v= [], []w.append(primary[key][0])#1、主件v.append(primary[key][0]*primary[key][1])if key in annex:#存在附件w.append(w[0]+annex[key][0][0])#2、主件+附件1v.append(v[0]+annex[key][0][0]*annex[key][0][1])if len(annex[key])>1:#附件个数为2w.append(w[0]+annex[key][1][0])#3、主件+附件2v.append(v[0]+annex[key][1][0]*annex[key][1][1])w.append(w[0]+annex[key][0][0]+annex[key][1][0])#4、主件+附件1+附件2v.append(v[0]+annex[key][0][0]*annex[key][0][1]+annex[key][1][0]*annex[key][1][1])for j in range(n,-1,-10):#物品的价格是10的整数倍for k in range(len(w)):if j-w[k]>=0:dp[j] = max(dp[j], dp[j-w[k]]+v[k])   
print(dp[n])

HJ17 坐标移动

在这里插入图片描述
需要注意使用 try-except

ping = input()lst = ping.split(";")coord = [0, 0]
for i in lst:l = len(i)if l >3 or l <= 1:continuea = i[0]try:if not 0 < len(i[1:]) < 3:continueb = int(i[1:])if 0 <= b <= 99:if a == 'A':coord[0] -= belif a =='D':coord[0] += belif a== 'W':coord[1] += belif a== 'S':coord[1] -= bexcept:continueout = str(coord[0]) + ',' + str(coord[1])
print(out)

★★★ HJ18 识别有效的IP地址和掩码并进行分类统计

在这里插入图片描述

import reA, B, C, D, E, errs, privates = 0, 0, 0, 0, 0, 0, 0def getBin(string):string_bin = ''for i in string.split('.'):string_bin += bin(int(i))[2:].rjust(8, '0')return string_bintry:while True:ip, mask = input().split('~')mask_bin = getBin(mask)if ip.split('.')[0] in ('0', '127'):continueelif mask in ('0.0.0.0', '255.255.255.255'):errs += 1continueelse:if re.search('01', mask_bin):errs += 1continueip_bin = getBin(ip)if re.search(r'\.\.', ip):errs += 1elif getBin('1.0.0.0') < ip_bin < getBin('126.255.255.255'):A += 1if getBin('10.0.0.0') < ip_bin < getBin('10.255.255.255'):privates += 1elif getBin('128.0.0.0') < ip_bin < getBin('191.255.255.255'):B += 1if getBin('172.16.0.0') < ip_bin < getBin('172.31.255.255'):privates += 1elif getBin('192.0.0.0') < ip_bin < getBin('223.255.255.255'):C += 1if getBin('192.168.0.0') < ip_bin < getBin('192.168.255.255'):privates += 1elif getBin('224.0.0.0') < ip_bin < getBin('239.255.255.255'):D += 1elif getBin('240.0.0.0') < ip_bin < getBin('255.255.255.255'):E += 1
except (EOFError, ValueError):pass
print(A, B, C, D, E, errs, privates)

HJ19 简单错误记录

在这里插入图片描述

lst = []
num = []while True:try:s = input().split('\\')[-1]data = s.split(' ')[0][-16:] + ' ' + s.split(' ')[1]if data not in lst:lst.append(data)num.append(1)else:num[lst.index(data)] += 1except:breakfor i in range(len(lst[-8:])):print(lst[-8:][i], num[-8:][i])

HJ20 密码验证合格程序

在这里插入图片描述
描述2:至少满足四种其中三种, 通过计算满足条件的和从而判断是否符合条件;且其他符号,直接采用else计算即可!

def check(s):if len(s) <= 8:return 0a, b, c, d = 0, 0, 0, 0for item in s:if ord('a') <= ord(item) <= ord('z'):a = 1elif ord('A') <= ord(item) <= ord('Z'):b = 1elif ord('0') <= ord(item) <= ord('9'):c = 1else:d = 1if a + b + c + d < 3:return 0for i in range(len(s)-3):if len(s.split(s[i:i+3])) >= 3:return 0return 1while True:try:print('OK' if check(input()) else 'NG')except:break

http://www.ppmy.cn/news/209943.html

相关文章

Jenkins+Docker+SpringCloud微服务持续集成之集群部署

一、集群部署流程说明 环境配置 #环境配置 hostnamectl set-hostname web2-server && su systemctl stop firewalld systemctl disable firewalldvim /etc/selinux/config SELINUXdisabledvim /etc/resolv.conf nameserver 114.114.114.114#安装依赖包 yum install -y…

vr 体验 vr游戏

<<the lab>>是htc value 官方出的vr实验室&#xff0c;里面包含了很多个小游戏&#xff0c;是目前最好的vr体验实例。

ps4虚拟现实VR眼镜入手体验

随着近几年越来越多的资本注入VR行业&#xff0c;市面上VR眼镜的款式和品牌也越来越多&#xff0c;不管是价格高低可以说VR眼镜已经覆盖了中高低端市场&#xff0c;今天小九主要为大家来讲一下ps4虚拟现实VR眼镜的入手体验&#xff0c;为什么要挑选这一款呢?因为市面上很多游戏…

索尼PS4程序升级,令PS VR带来私人3D影院体验

原文标题&#xff1a;索尼PS4程序升级&#xff0c;令PS VR带来私人3D影院体验 从VR技术“复兴”以来&#xff0c;被类比最多的就是此前的3D技术&#xff0c;后者已经随着几大电视厂商正式停产3D电视而寿终正寝。虽然3D电视已经没戏了&#xff0c;但不代表你买的3D蓝光碟也没用了…

Oculus'Quest是第一款真正的VR游戏机

Oculus’Quest是第一款真正的VR游戏机 Oculus VR在周三的年度Connect开发者大会上发布了一个巨大的硬件惊喜&#xff1a;全新的独立Quest虚拟现实耳机。Quest是Oculus过去五年VR工作的总结&#xff0c;Facebook首席执行官马克扎克伯格称这是迈向十亿人进入VR的重要一步。 但第…

java vr 开发_VR:虚拟与现实

​1 周末体验了一把VR眼镜带来的不同乐趣。 给我的直观感受可以用两个字来形容&#xff1a;”颠覆“。 其中的游戏体验可以用2D到3D上升一个维度&#xff0c;3D再到VR再次上升一个维度来形容&#xff0c;完全的沉浸体验&#xff0c;给人身临其境的感觉。 戴上VR眼镜&#xff0c…

索尼PS VR游戏体验汇总 399美元起高端VR究竟值不值得买?

索尼PS VR附带的迷之小黑盒到底是干什么用的&#xff1f; 时隔两年&#xff0c;索尼再次在 GDC&#xff08;游戏开发者大会&#xff09; 展示 PlayStation VR &#xff08;之前叫 Project Morpheus&#xff09;。在 Oculus Rift、HTC Vive 等明星产品纷纷公布售价后&#xff0c…

VR干货:如何将你的游戏上架Oculus PSVR VIVE等平台

016VR产业一片大火&#xff0c;各大厂商纷纷把目光投向VR内容市场&#xff0c;以下就是浪哥为广大开发者统计到的目前最火爆的几个VR平台的审核方式与开发者基本操作指南&#xff0c;一起来看看吧&#xff01;~ HTC开发者&#xff08;VIVE&#xff09; 基本资料提交 ①注册应用…