玩点好玩的:智能锁 - 虚位密码的实现

虚位密码 是一个很有意思的功能,不知道什么时候开始变成了智能锁的标配功能之一。

虚位密码的意思是你输入的密码位数不固定,但是只要你输入的密码有你当初设定的密码,那么就认为是正确的;反之就是错误的。

虚位密码功能在C++ 或者 Java中最类似的应该是String类里面查找+比较功能。

这里仅仅用最简单的算法来进行实现,不求特别复杂的实现。

很多的时候工程里面要取舍 实现的质量(从效率和占用来衡量) 和 实现的速度(编码的时间。Java之所以流行就是因为他的编码速度比较快【一次编译,处处运行】,虽然Java面向对象实现的不是那么完美)。

这里扯远了。本次只实现两个版本的代码:标准C++(运行平台:PC) 和 嵌入式C++(Arduino用的C++)


 思路

对于给定的字符串 s,我们首先获取其的首字符 c,之后再用户输入的字符串 p中,去寻找 c所在的位置,再从c所在的位置切取长度与 给定的字符串s 一样的字符串,进行比较(C语言里面加起来减的比较),若比较结果为0,则认为找到该串,返回成功的结果;反之,如果为能在给定的区域找到给定的字符串,即搜索的位置已达末尾,以及分割出来的子串长度已经小于给定的字符串长度,则认为失败,返回失败的结果。

结果

成功:true,找到相似的字符串

失败:false,未找到相似的字符串


 下面是一个标准C++的实现,C++版本为11

 1 #include<string>
 2 #include <iostream>
 3 
 4 int main()
 5 {
 6     int findlength = 0; //寻找的长度
 7     bool isOK = false; //找到了就是true
 8     std::string passwd = "218519"; //原始密码
 9     std::string userinputpasswd;
10     std::cout << "请输入密码:";
11     std::cin >> userinputpasswd;
12     while (findlength < userinputpasswd.size())
13
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值