算法-用什么算法可以比较高效地实现电子密码锁的虚位密码功能?

发布于 2017-01-22 18:46:25 字数 132 浏览 1271 评论 4

比如设置好的密码是:123456(只是其中设置好的一组密码), 我输入2354123456987 也可以验证成功。

采用逐位比较加对比密码位数的方法应该能实现,但是在密码容量比较大的情况下就显得效率很低...请有好方法的朋友赐教^_^

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泛泛之交 2017-08-08 12:27:53

正如楼上所说的,使用正则匹配是最简单的方法,而且效率也高,同时支持的语言也多。
还有就是根据使用的语言里边自己带的筛选功能,但是这个效率应该比较低一点。

虐人心 2017-07-04 09:19:10

办法有很多
可以进行正则匹配
比较简单方便

归属感 2017-05-13 02:37:44

因为可能是在单片机或者 嵌入式上用,给你个简单的算法

pwd = 123456
inputpwd = 2354123456987

if (len(inputpwd) < len(pwd)){ throw 密码错鸟}
elif {
// 第一种方法: 从 inputpwd 的0开始取子串 长度为 len(pwd) 获取的子串和 pwd 比 如果相等 开锁 停止循环
// 第二种方法: 因为你密码是 1 开头 在inputpwd找到第一个1 开的头的位置 取子串长度为 len(pwd) 与密码比较 如果不是 再找第二个 1 同样取len(pwd)子串比较
如果子串长度 小于len(pwd) 还没比较成功就可以停了 密码不对
}

虐人心 2017-04-15 16:11:51

最近通过查找相关资料和进行相应测试,移植精简的REEC正则表达式库,当匹配字符串超过一定长度就会匹配出错,我发现采用PCRE或REEC正则表达式库进行虚位密码匹配有点大材小用,而且要求有足够的内存空间,而且这两个库不适合在小系统单片机中运行。个人觉得用strstr(a,b)或KMP算法比较合适。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文