CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16
目录
前言/背景
这是我个人参加的第三次CSDN竞赛了。
第一次是第四期,写出来前两到简单的题,题目有梯度
第二次是第五期,对我这个新人来说太难了,只能拿一点分,一道题都不能完全写出来。题目对于新手来说太难了
第三次这次,题目又太简单了,所有能完成全部题目。都是比较简单的题目,主要是考验速度。
也没什么好多说的,直接上代码
解题思路
1.严查枪火
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: 请在此编写代码
num=0
for i in range(0,n):
if vector[i]=='ak' or vector[i]=='m4a1' or vector[i]=='skr':
num+=1
result=num
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.鬼画符门
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: 请在此编写代码
ans={}
for i in vector:
if i in ans:
ans[i] = ans[i] + 1
else:
ans[i] = 1
max = 0
for key in ans.keys():
if ans[key] > max:
max = ans[key]
ans_s = key
result = ans_s
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.收件邮箱
3、题目名称:收件邮箱 已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化) 输入样例:dotadwatdfatdotcom 输出样例:dotadw@dfat.com
开头结尾不转换,可以先把第一个和最后一个字母去掉,再处理,代码:
class Solution:
def __init__(self) -> None:
pass
def solution(self, str):
result = None
# TODO: 请在此编写代码
begin=str[0]
str_1=str[1:]
str_1=str_1[::-1]
end=str_1[0]
str_1=str_1[1:]
str_1=str_1[::-1]
ans_1=str_1.replace('at','@',1)
ans_2=ans_1.replace('dot','.')
ans_2=ans_2+end
ans_2=ans_2[::-1]
ans_2=ans_2+begin
ans_2=ans_2[::-1]
result=ans_2
return result
if __name__ == "__main__":
str = input().strip()
s = Solution()
result = s.solution(str)
print(result)
4.最长递增的区间长度
4、题目名称:最长递增的区间长度 给一个无序数组,求最长递增的区间长度。 输入描述: 第一行输入整数n。 第二行输入n个整数。 输出描述: 输出最长递增的区间长度。 输入样例: 6 5,2,3,8,1,9 输出样例: 3
不需多说,代码:
class Solution:
def __init__(self) -> None:
pass
def solution(self, n, arr):
result = None
# TODO: 请在此编写代码
crr=arr[0]
max=1
max_crr=1
for i in arr:
if i>crr:
max_crr+=1
else:
max_crr=1
if max_crr>max:
max=max_crr
crr=i
result=max
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)
结语
有什么更好的改进或者解题思路,欢迎大家评论留言指正,分享,互相学习,共同进步。