算法-用什么算法可以比较高效地实现电子密码锁的虚位密码功能?
比如设置好的密码是:123456(只是其中设置好的一组密码), 我输入2354123456987 也可以验证成功。
采用逐位比较加对比密码位数的方法应该能实现,但是在密码容量比较大的情况下就显得效率很低...请有好方法的朋友赐教^_^
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
正如楼上所说的,使用正则匹配是最简单的方法,而且效率也高,同时支持的语言也多。
还有就是根据使用的语言里边自己带的筛选功能,但是这个效率应该比较低一点。
办法有很多
可以进行正则匹配
比较简单方便
因为可能是在单片机或者 嵌入式上用,给你个简单的算法
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) 还没比较成功就可以停了 密码不对
}
最近通过查找相关资料和进行相应测试,移植精简的REEC正则表达式库,当匹配字符串超过一定长度就会匹配出错,我发现采用PCRE或REEC正则表达式库进行虚位密码匹配有点大材小用,而且要求有足够的内存空间,而且这两个库不适合在小系统单片机中运行。个人觉得用strstr(a,b)或KMP算法比较合适。