[leetcode/lintcode 题解] 密码强度检查器

本文介绍了如何检查一个密码是否为强密码,条件包括长度在6-20个字符,至少包含小写字母、大写字母和数字,且不包含三个连续重复字符。给出的函数`strongPasswordChecker(s)`计算将输入字符串s转换为强密码所需的最少更改次数。文章探讨了处理不同情况的策略,如插入、删除或替换字符,以及针对长度、字符类型和重复字符的处理方法。
摘要由CSDN通过智能技术生成

当以下条件都满足时,一个密码被视为是强密码:

1.至少包含6个字符,但不超过20个字符。
2.至少包含一个小写字母,一个大写字母,和一个数字。
3.不能包含三个连续的重复字符("…aaa…“是弱密码,但”…aa…a…"是强密码,假设它们的其他条件都满足了)。

写一个函数strongPasswordChecker(s),它将一个字符串s作为输入,并且返回将其转换成强密码需要的最少改变次数。如果s已经是一个强密码了,返回0。
插入、删除或者替换任意一个字符都视为一次改变。

点这里在线做题

样例 1:

输入:"aaa123"
输出:1
解释:"aaa123"->"aaA123"
样例 2:
输入:"a"
输出:5
解释:"a"->"aa"->"aaA"->"aaA1"->"aaA12"->"aaA123"

【题解】

  • 考点:
    思维
    题解:本题根据要求最小的改变次数,确定修改策略即可。
    变为强密码需要解决三种问题:
  • 长度小于6时需要插入字符,长度大于20时需要删除字符
  • 缺失字符或数字ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值