Python:每日一题 363
本帖最后由 zltzlt 于 2020-4-1 13:23 编辑今天的题目:
有一个需要密码才能打开的保险箱。密码是 n 位数,密码的每一位是 k 位序列 0, 1, ..., k-1 中的一个 。
你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保险箱。
举个例子,假设密码是 "345",可以输入 "012345" 来打开它,只是你输入了 6 个字符。
返回能打开保险箱的并且字典序最小的字符串。
示例1:
输入:n = 1, k = 2
输出:"01"
说明:"10"也可以打开保险箱。
示例 2:
输入:n = 2, k = 2
输出:"00110"
说明:"01100", "10011", "11001" 也能打开保险箱。
{:10_298:}欢迎大家一起答题!{:10_298:} 有点晕,没看懂题型 示例1中为什么10也能打开?此时保存的不是最后一位0吗 本帖最后由 永恒的蓝色梦想 于 2020-3-31 08:13 编辑
这道题的意思是让我们找出一个最短的能包含所有可能密码的字符串。 不懂,麻烦多发几个例子 这题的描述就贼离谱, 越来越看不懂题目了{:10_266:} from itertools import product as p,permutations as pm
def f363(n,k):
l=[]
r=[]
for e in p(*[''.join(map(str,range(k)))]*n):
l.append(''.join(e))
for e in pm(l,len(l)-1):
s='0'*n
for ee in e:
if not s:
s+=ee
elif ee in s:
continue
else:
for i in range(n):
if ee==s[-n+i:]:
s+=ee
break
else:
s+=ee
r.append(s)
r.sort(key=lambda x:(len(x),x))
return r
头大,写个超时的 这还是密码箱吗?这么多密码都能开。。。 看了视频前3P的过来看这个一脸懵逼 就想问第二个列子输出0110,或者110是不是正确答案 前排占位 @zltzltk不会超过10吧 zltzlt,亲爱的楼主,咱能不能把题目说清楚一点???我语文本来就不好的{:5_99:} 我买的书,扫码二维码不能看视频,看到序列,函数这些视频都不能看 这是什么情况,文泉云盘的视频。 from itertools import product as p
def f363(n,k):
keys=[]
for e in p(*[''.join(map(str,range(k)))]*n):
keys.append(''.join(e))
res=''.join(keys)
Flag=1
while Flag:
i=len(res)-1
while True:
if sum(+res) for k in keys])==0:
res=res+res
break
else:
i-=1
if i==0:
Flag=0
break
return res chenlei92 发表于 2020-3-31 00:23
我买的书,扫码二维码不能看视频,看到序列,函数这些视频都不能看 这是什么情况,文泉云盘的视频。
BILIBILI 搜 鱼C-小甲鱼 这个版块版主换了是吧,前年7月份的时候记得没有这么复杂,刚读题目都要想半天 Chysial 发表于 2020-3-31 08:46
这个版块版主换了是吧,前年7月份的时候记得没有这么复杂,刚读题目都要想半天
这个版主是去年下半年上任的~
这个题目摘自leetcode,本身题目描述就有问题,不是版主的锅 Chysial 发表于 2020-3-31 08:46
这个版块版主换了是吧,前年7月份的时候记得没有这么复杂,刚读题目都要想半天
和我注册的时间差不多
页:
[1]
2