shopee虾皮科技测试工程师第一次笔试

10道单选题
10道多选题
2道编程题

第一题:十进制转二进制计算1的个数(负数转为补码)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/8/23 15:44
# @Author  : @linlianqin
# @Site    : 
# @File    : 十进制转换为二进制(计数1的个数).py
# @Software: PyCharm
# @description:

class Solution:
	def oct_to_binary(self, input_int):
		# write code here
		tag = True
		if input_int == 0:
			return 0
		if input_int < 0:
			tag = False
		abs_int = abs(input_int)
		# 原码
		bin_int = list(bin(abs_int)[2:])
		bin_int = ["0" for _ in range(32 - len(bin_int))] + bin_int
		if tag:
			return bin_int.count("1")
		else:
			# 反码
			reverse_bin_int = ["0" for _ in range(32)]
			for index, i in enumerate(bin_int):
				if i == "0":
					reverse_bin_int[32-len(bin_int)+index] = "1"
			# 补码
			res = ""
			resual = True
			for index,i in enumerate(reverse_bin_int[::-1]):
				if i == "0":
					if resual:
						res = "1"+res
					else:
						res = "0"+res
					resual = False
				elif i == "1":
					if resual:
						res = "0" + res
						resual = True
					else:
						res = "1" + res
			if resual:
				res = "1" + res
			return res.count("1")

print(Solution().oct_to_binary(-5))

第二题:字符串转为驼峰

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/8/23 16:21
# @Author  : @linlianqin
# @Site    : 
# @File    : 输入的字符串转换为驼峰.py
# @Software: PyCharm
# @description:
'''
详细描述
1. 转换后的字符串只保留字母[a-zA-Z]和数字[0-9],去除其他字符;
2. 输入字符串中的字母字符的前一字符如非字母或数字,该字母转换后为大写,如果前一个字符为字母或者数字,字母转换后为小写;
例外:转换后的字符串第一个字符如果是字母,则该字母转换后为小写;——字符串首字母小写
3. 转换后的字符串保留数字字符。
4. 字符串如果为空或者无[a-zA-Z]和数字[0-9]中字符,请默认输出如下字符串"shopee"
'''


class Solution:
	def camelCase(self, newString):
		# write code here
		strLen = len(newString)
		# 字符串为空
		if strLen == 0:
			return "shopee"
		# 字符串不为空
		res = []
		for index,code in enumerate(newString):
			# 是字母或者数字
			if code.isalnum():
				if index == 0:
					if code.isdigit():
						res.append(code)
					else:
						res.append(code.lower())
					continue
				# 前一个是字母和数字时:
				if index >= 1 and newString[index-1].isalnum():
					if code.isdigit():
						res.append(code)
					else:
						res.append(code.lower())
				# 前一个不是字母和数字时
				elif index >= 1 and not newString[index - 1].isalnum():
					if code.isdigit():
						res.append(code)
					else:
						res.append(code.upper())
		#处理第一个字符
		if len(res) == 0:
			return "shopee"
		else:
			if res[0].isalpha():
				res[0] = res[0].lower()
			res = "".join(res)
			return res

print(Solution().camelCase("__HELLO_World"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有情怀的机械男

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值