python实现密码检查_Python中的强大密码检查器

假设我们有一个字符串,密码。我们必须找出使密码更安全所需的最小更改。因此密码具有以下一些条件-长度至少为6个字符,最长为20个字符

它必须包含至少一个小写字母,至少一个大写字母和至少一个数字字符。

它不能连续包含三个重复字符,例如…aaa…,…PPP…,…888…。

因此,如果输入像“ aa26bbb”,那么我们至少需要进行一次更改,因为没有大写字母,并且连续存在三个b,因此我们可以用一个大写字母替换任何b使其变强。

为了解决这个问题,我们将遵循以下步骤-设置missingTypes:= 3。

如果它至少有一个小写字母,则将missingTypes减少1

如果它至少有一个大写字母,则将missingTypes减少1

如果它至少有一个数字,则将missingTypes减少1

更改:= 0,一个:= 0和两个:= 0,p:= 2

当p

当p

更改:=更改+长度/ 3

如果长度被3整除,则增加1

否则,当长度可被3整除时,再将其增加1

长度:=长度+ 1

p:= p + 1

如果s [p]与s [p – 1]相同,并且也与s [p-2]相同,则

否则将p增加1

如果s的大小<6,则返回missing_type的最大值和6 – s的大小

否则,当s的大小<20时,则返回missing_type的最大值并进行更改

除此以外删除:= s的大小– 20

更改:=更改–最小删除和一个

更改:=更改–(最小(删除的最大值–一个和0)和两个* 2)/ 2

更改:=更改–(最大删除次数–一– 2 *二和0)/ 2

返回delete + missing_type的最大值并进行更改

让我们看下面的实现以更好地理解-

示例class Solution(object):

def strongPasswordChecker(self, s):

missing_type = 3

if any('a' <= c <= 'z' for c in s): missing_type -= 1

if any('A' <= c <= 'Z' for c in s): missing_type -= 1

if any(c.isdigit() for c in s): missing_type -= 1

change = 0

one = two = 0

p = 2

while p 

if s[p] == s[p-1] == s[p-2]:

length = 2

while p 

length += 1

p += 1

change += length / 3

if length % 3 == 0: one += 1

elif length % 3 == 1: two += 1

else:

p += 1

if len(s) 

return max(missing_type, 6 - len(s))

elif len(s) <= 20:

return max(missing_type, change)

else:

delete = len(s) - 20

change -= min(delete, one)

change -= min(max(delete - one, 0), two * 2) / 2

change -= max(delete - one - 2 * two, 0) / 3

return delete + max(missing_type, change)

ob = Solution()print(ob.strongPasswordChecker('aa26bbb'))

输入值“aa26bbb”

输出结果1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值