5个小题目的编程竞赛python解答

举报
livingbody 发表于 2022/11/12 22:43:19 2022/11/12
【摘要】 1.严查枪火最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)class Solution: def __init__(self) -> None: pass def solution(self, n, vector): result = 0 ...

1.严查墙火

最近开始严管墙火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是墙支。
小Q想知道自己需要按照私藏墙火来关押多少人。 (只有以上三种墙被视为违法)

class Solution:
	def __init__(self) -> None:
		pass
	def solution(self, n, vector):
		result = 0
		# TODO: 请在此编写代码
		for i in range(n):
			if vector[i] in ['ak', 'm4a1', 'skr']:
			result=result+1
		return result
	if __name__ == "__main__":
		n = int(input().strip())
		vector = []
		for i in range(n):
			vector.append(input().strip())
		s = Solution()
		result = s.solution(n, vector)
		print(result)

这是第一题,没啥说的,python 嘛,轮子都有了,直接写就好了。

2.鬼画符门

鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个
程序统计每年消耗数量最多的鬼画符吗?

class Solution:
	def __init__(self) -> None:
		pass
	def solution(self, n, vector):
		result = ""
		result_list={}
		for item in vector:
			if item not in result_list:
				result_list[item]=1
			else:
				result_list[item]=result_list[item]+1
		# TODO: 请在此编写代码
		for key , value in result_list.items():
			if value==max(result_list.values()):
				result=key
		return result
if __name__ == "__main__":
	n = int(input().strip())
	vector = []
	for i in range(n):
		vector.append(input().strip())
	s = Solution()
	result = s.solution(n, vector)
	print(result)

这个题目就是考了python的map使用:

  • 首先建立map,有的放进去,并+1;
  • 获取map中value最大的,然后返回key。

3.收件邮箱

已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用
的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)

class Solution:
	def __init__(self) -> None:
		pass
	def solution(self, strabc):
		# result = None
		# TODO: 请在此编写代码
		result=strabc[1:-1].replace('dot','.').replace('at','@',1)
		result=strabc[0]+result+strabc[-1]
		return result
if __name__ == "__main__":
	strabc = input().strip()
	s = Solution()
	result = s.solution(strabc)
	print(result)

这个题目我有点取巧,直接用的replace函数解决掉的,属于有手就可以写的。

4.最长递增的区间长度

给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3

class Solution:
	def __init__(self) -> None:
		pass
	def solution(self, n, arr):
		result = 1
		t=1
		for i in range(len(arr)-1):		
			if arr[i]<arr[i+1]:
				t+=1
			else:
				result=max(result,t)
				t=1
		result=max(result, t)
		return result
if __name__ == "__main__":
	n = int(input().strip())
	arr = [int(item) for item in input().strip().split()]
	s = Solution()
	result = s.solution(n, arr)
	print(result)

该题目耗费我时间比较多,开始写的一致是90%通过,有10%通不过,后来整体上换了,解决的。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。