携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
1.
给定一个只包括 '(',')','{','}','[',']' 的字符串,想让你帮忙编写程序确定括号是否都是正常闭合。
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 空字符串被认定为True
输入格式:: 输入空字符串或一行只包含'(',')','{','}','[',']' 的字符串。
输出格式:: 如果所有括号正确闭合,输出“True”,否则输出“False”。
输入样例:
{[()]()}输出样例:
在这里给出相应的输出。例如:
True输入样例:
在这里给出一组输入。例如:
{{()[]}输出样例:
在这里给出相应的输出。例如:
False代码长度限制:16KB;时间限制:400 ms;内存限制:64 MB
分析🤔:判断括号的有效性可以使用「栈」这一数据结构来解决。 我们对给定的字符串 s 进行遍历,当我们遇到一个左括号时,我们会期望在后续 的遍历中,有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合, 因此我们可以将这个左括号放入栈顶。当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。如果不是相同的类 型,或者栈中并没有左括号,那么字符串 s 无效,返回False。括号要正常闭合,则串长度需要模2等于0,以此我们可以做初步判断。我们可以用字典存储每一种括号,字典的键为右括号,值为相同类型的左括号。在遍历结束后,如果栈中没有左括号,说明我们将字符串 s 中的所有左括号闭合,返回 True,否则返回 False。
def isTF(s):
if s.isspace():
return True
if not s.isspace() and len(s)%2 != 0:
return False
p = {")":"(","]":"[","}":"{"}
stack = list()
for i in s:
if i in p:
if not stack or stack[-1]!=p[i]:
return False
stack.pop()
else:
stack.append(i)
if not len(stack):
return True
return False
s = input()
if isTF(s):
print("True")
else:
print("False")
2.
每年的国庆,我们的CPA协会都会举办程序设计培训,主要是为了给热爱代码的同胞们提供一个平台。今年的疫情格外的激烈,但依然没有阻挡我们热爱代码的激情。国庆期间因为整天的敲代码,让我们头昏眼花,为了丰富我们的代码生活,我们的会长发明了一个游戏。(输了要请客吃饭)。
游戏只有2个人,每个人都有幸运值,一开始会长的幸运值为0,你的值为1。(因为会长是老大,所以让着我)。开始以后,由会长先开始,会长使用一招乾坤大挪移,此时 你的幸运值会加持到会长的幸运值上,会长的幸运值会立即更新。(会长的幸运值会累加上你的值),当然你也不甘示弱,到你的时候,你顺手一招移花接木,会长的幸运值被你掠夺过来。你的幸运值也会更新(你的幸运值会累加上会长的值)。 当其中一个人的值大于等于给定的一个值,谁就获胜。要求输出胜利一方的姓名和幸运值。(会长的名字默认为"Jiangcheng" )
分析🤔:简单题,两个数不断求和,当某一个数大于等于目标值时break
name,luckpointtarget = input().split()
luckpointtarget = int(luckpointtarget)
huizhangpoints = 0
yours = 1
while huizhangpoints<luckpointtarget and yours<luckpointtarget:
huizhangpoints += yours
yours += huizhangpoints
if huizhangpoints>= luckpointtarget:
print("Jiangcheng")
print(huizhangpoints)
else:
print(name)
print(yours)
3.
H指数,设计一种查找算法,使其时间复杂度为 O(logn)。
H 指数 的定义:H 代表“高引用次数”(high citations),一名科研人员的 H指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 N - h 篇论文每篇被引用次数 不超过 h 次。
输入格式:
输入一行数字num用 , 隔开,代表一位研究者论文被引用次数,已经按照 升序排列 。
0 ≤ num ≤ 106
0 < 个数(num) ≤ 106
输出格式:
输出一个数字代表 H指数 。
输入样例:
1,3,5,6,7输出样例:
3输入样例
2,9,13,13,14,15,15,21,21,22,27,28,30,30,33,42,42,44,48,54,56,56,57,58,58,59,59,59,60,61,62,62,65,67,70,74,76,76,78,78,81,81,82,83,84,89,91,95,96,97输出样例:
35代码长度限制:16 KB; 时间限制:500 ms; 内存限制:128 MB
分析🤔:简单题,只需要判断列表里面的元素即可。但是需要注意将每一 种情况都考虑在内。
def change(bills):
if bills[0]!=5:
return False
else:
bills2 = bills[1:]
five_money=1
ten_money=0
for i in bills2:
if i == 5:
five_money += 1
elif i == 10:
five_money -= 1
ten_money += 1
else:
if ten_money >= 1:
ten_money -= 1
five_money -= 1
else:
five_money -= 3
if five_money < 0 or ten_money < 0:
return False
return True
if __name__ == '__main__':
bills=list(map(int,eval(input())))
canchange=change(bills)
if canchange==False:
print('False',end="")
else:
print("True",end="")