【CSDN编程竞赛第六期】 Python 题解

发布于:2022-12-13 ⋅ 阅读:(493) ⋅ 点赞:(0)

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16

前言

本次比赛比较简单,拼的就是速度了。因为点了开始比赛时,突然感到一阵屎意,导致迟了半个小时才正式开始答题,所以没能取得比较好的名次。题目比较简单,直接用Python一把梭哈。

Python代码

1、题目名称:严查枪火

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

输入描述:
第一行输入整数n.(1<=n<=10000)表示携带违禁物品的人数。
以下n行表示违禁物品的名称。

输出描述:
输出需要按照私藏枪火来关押的人。

输入样例:
3
Dsd
ak
232asd

输出样例:
1

class Solution:
	def __init__(self) -> None:
		pass
		
	def solution(self, n, vector):
		result = None
		
		# TODO: 请在此编写代码
		result = 0
		for i in range(n):
			if vector[i]=="ak" or vector[i]=="m4a1" or vector[i]=="skr":
				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)

2、题目名称:鬼画符门

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

输入描述:
第一行输入整数n.(1<=n<=1000)
以下n行输入n个字符串。

输出描述:
输出答案字符串。

输入样例:
5
red
red
green
grenn
hen

输出样例:
red

class Solution:
	def __init__(self) -> None:
		pass
		
	def solution(self, n, vector):
		result = None
		
		# TODO: 请在此编写代码
		dict={}
		for i in vector:
			if i not in dict:
				dict[i]=1
			else:
				dict[i]+=1
		t=max(dict.values())
		for k,v in dict.items():
			if v==t:
				result=k
				break
				
		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)

3、题目名称:收件邮箱

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

输入描述:

输入字符串str.(1<=strlen(str)<=1000)

输出描述:

输出转化后的格式。

输入样例:

mxyatoxcoderdotcom

输出样例:

mxy@oxcoder.com

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

	str = input().strip()

	s = Solution()
	result = s.solution(str)

	print(result)

4、题目名称:最长递增的区间长度

在这里插入图片描述
给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3

输入描述:

第一行输入整数n。(1<=n<=10000)表示数组的大小
第二行给出n个整数a.(-1e9<=a<=1e9)

输入样例:

6
5 2 3 8 1 9

输出样例:

3

class Solution:
	def __init__(self) -> None:
		pass

	def solution(self, n, arr):
		result = None

		# TODO: 请在此编写代码
		result=0
		t=1
		arr.append(-1e9-1)
		for i in range(n):
			if arr[i+1]>arr[i]:
				t+=1
			else:
				result=max(result,t)
				t=1

		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)

经验心得

不得不说,Python比Java简洁多了,灵活运用Python的库函数,可以很方便的解题。

本文含有隐藏内容,请 开通VIP 后查看