【CSDN编程竞赛第六期】python详解

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

目录

目录

前言/背景

解题思路

1.严查枪火

2.鬼画符门

3.收件邮箱

4.最长递增的区间长度

结语


前言/背景

这是我个人参加的第三次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)

结语

有什么更好的改进或者解题思路,欢迎大家评论留言指正,分享,互相学习,共同进步。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_小豫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值