CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16
(请不要删掉此地址)
目录
前言/背景
大赛简介
参赛流程
参赛经历
解题思路
经验心得
资料分享
前言/背景
目前为止共参加过三次,不过没拿到什么排名。
大赛简介
大赛每月举行两次,基本上都在周末。
大赛奖励:
![](https://img-blog.csdnimg.cn/ebe1de4484a142df8ba38cf61f343dbb.png)
参赛流程
在规定时间内参加比赛,并在两个小时内提交答案。
参赛可以用Java、C、C++、C#、Python、JavaScript、lua、go等编程语言,使用语言十分自由。
解题思路
1.严查枪火
class Solution:
def __init__(self):
return
def solution(self, n, arr):
result = 0
forbidden = ['ak', 'm4a1', 'skr'] # 违禁的三种枪支名称
for a in arr:
if a in forbidden:
result += 1
return result
2.鬼画符门
class Solution:
def __init__(self):
return
def solution(self, n, arr):
result = 0
d = {}
for a in arr:
if a in d: # 该鬼画符之前出现过
d[a] += 1
else: # 该鬼画符之前没有出现过
d[a] = 1
tmp = dict(sorted(d.items(), key=lambda x:x[1], reverse=True))
result = list(tmp.keys())[0]
return result
3.邮箱格式转换
class Solution:
def __init__(self):
return
def solution(self, s):
result = ''
flag_at = False # at的辅助判断标签
# dot 的转换
result = s.split('dot')
result = '.'.join(result)
if result[0] == '.':
result = 'dot' + result[1:]
if result[-1] == '.':
result = result[:-1] + 'dot'
# at 的转换
for i in range(1, len(result)-1): # 排除头尾的at
if flag_at: # 前一个字符是'a'
if result[i] == 't':
result = result[:i-1] + '@' + result[i+1:]
break
else:
flag_at = False
else:
if result[i] == 'a':
flag_at = True
return result
4.最长递增的连续子数组长度
class Solution:
def __init__(self):
return
def solution(self, n, arr):
result = 1
tmp = 1
for i in range(1, n):
if arr[i] <= arr[i-1]: # i开始非递增
result = max(tmp, result)
tmp = 1
else:
tmp += 1
result = max(tmp, result)
return result
经验心得
这次的比赛题目比前几次简单的多,不过由于对编程语言不够熟练导致仍花费很多时间去思考构思解题逻辑,唯有手熟才能做到更快更好。
资料分享
在有一定的编程基础上坚持参加csdn的每日一题,用很少的时间提升编程水平。
每日一练地址:https://edu.csdn.net/dailycode