|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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" 也能打开保险箱。
 欢迎大家一起答题! 
@zltzlt 已经补充
- def oldfun363(n,k):
- if n == 1:
- result = ''
- for each in range(0,k):
- result += str(each)
- return result
- result = '0'*(n-1)
- hasBeenIn = set()
- temp = 0
- M = k**n
- for each in range(0,M):
- for inner in range(k-1,-1,-1):
- tempInner = (temp*k+inner)%(M)
- if tempInner not in hasBeenIn:
- hasBeenIn.add(tempInner)
- result += str(inner)
- temp = tempInner
- break
- return result
复制代码
|
|