35、破解保险箱

news/2024/11/25 21:49:30/

题目描述:
有一个需要密码才能打开的保险箱。密码是 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” 也能打开保险箱。

提示:

n 的范围是 [1, 4]。
k 的范围是 [1, 10]。
k^n 最大可能为 4096。

总共有k^n中可能,也就是将这些可能拼接成最短的字符串,这个字符串要包含所有的组合,比如n=k=2
那么组合的过程就是
00
001
0011
00110
这样的结果是最短的,也就是我们每次取n-1的长度,然后从最大的进行拼接,set是存放所有的可能,如果没有那么放进去,跳出循坏,然后继续取出n-1的长度

比如:
n=2,k=3那么过程就是
00
002
0022
00221
002212
0022120
00221201
002212011
0022120110
0022120110
这样的字符串时最短的

class Solution {public String crackSafe(int n, int k) {// 先计算总共有多少种可能int sumnum = (int) Math.pow(k, n);// set里面存放所有的排序结果Set<String> set = new HashSet<>();// 初始化放入的是n个0的排序StringBuilder sb = new StringBuilder();for (int i = 0; i < n; i++) {sb.append("0");}set.add(sb.toString());for (int i = 1; i < sumnum; i++) {String temString = sb.substring(sb.length() - n + 1);for (int j = k - 1; j >= 0 ; j--) {String tem = temString + j;if(!set.contains(tem)){sb.append(j);set.add(tem);break;}}}return sb.toString();}
}

http://www.ppmy.cn/news/341511.html

相关文章

arduino实现简易保险柜

文章目录 arduino小实验一 、功能实现二、编写部分银行保险柜程序&#xff1a;三、完整保险柜功能 四、总结 arduino小实验 刚好最近学东西有用到arduino&#xff0c;所以把平常的小实验做成实验&#xff0c;有兴趣的朋友可以看看。 一 、功能实现 一、水银开关实现呼吸灯…

智能解锁保险柜

/************************1号修改,可以验证密码正确********************************************** ----------------1.开发环境:Keil v4 ---------------- ----------------2.使用单片机型号&#xff1a;STC89C52RC ---------------- ----…

保险柜里的不一定更安全

早些针对国内企业的一次关于云计算的问卷调查里&#xff0c;有一位受访者说自己绝对不会使用云计算&#xff0c;因为云不安全&#xff0c;他宁愿每天将数据存进移动硬盘然后锁保险柜里。 的确&#xff0c;数据安全是绝大多数企业IT 专家在选择云计算供应商时最担心的问题之一&…

2021趋势研判:保险柜(箱)行业市场规模与现状

不清楚一个行业的底细和前景就进去无异于自杀,因此, 搞明白一个行业到底是什么,水有多深就显得尤为必要。 保险柜是一种特殊的安保设备,根据其功能主要分为防火保险柜、防盗保险柜、防磁保险柜、防火防磁保险柜,以及防火防盗保险柜等。 注:为了表述方便,全文内容以’保险…

一个保险柜密码是三位数,对上其中两位就可以打开,最坏至少试多少次才能保证打开

一个保险柜密码是三位数&#xff0c;如123&#xff0c;这个密码锁产生了故障&#xff0c;对上其中两位就可以打开&#xff08;如1X2&#xff0c;X23&#xff09;。问最坏情况下&#xff0c;至少试多少次才能保证打开&#xff1f; 1、正常算法&#xff1a;最坏情况就是 1000去掉…

隐私保险柜隐私政策

隐私政策 版本更新日期&#xff1a;2021年9月14日 版本发布日期&#xff1a;2021年9月14日 一、总则 隐私保险柜非常重视用户个人信息的保护。您在使用我们的产品或服务时&#xff0c;我们可能会收集和使用您的相关信息。我们希望通过《隐私保险柜隐私政策》&#xff08;以下…

智能保险柜

样例简介 智能保险柜实时监测保险柜中振动传感器&#xff0c;当有振动产生时及时向用户发出警报。在连接网络后&#xff0c;配合数字管家应用&#xff0c;用户可以远程接收智能保险柜的报警信息。后续可扩展摄像头等设备&#xff0c;实现对危险及时报警&#xff0c;及时处理&am…

如何在docker中安装mysql,并把数据映射到宿主机做持久化

我们可以按照以下步骤在docker中安装mysql&#xff0c;并把数据映射到宿主机做持久化&#xff1a; 拉取mysql镜像 在终端中执行以下命令&#xff1a; docker pull mysql创建MySQL容器并映射数据到宿主机 执行以下命令在docker中创建MySQL容器&#xff0c;并将数据保存到宿主…