Leetcode 420 強密碼檢驗器

2022-03-12 20:36:44 字數 1912 閱讀 5094

分析:

是一道數學題。

連續字串刪除和插入的方式代價高,盡量使用替換。如何理解呢?對於任意》=3的連續串長度為s,所需要的替換次數為s//3,

而使用插入(s-1)/2次操作和刪除s-2次。插入和刪除相結合還是比替換要慢。

對於長度》=3的連續串,每個修改次數為s//3, s為連續串的長度,記錄總的連續串修改次數為n_modify

記錄確實字元個數為n_lack

length<6,返回max(6-len(s), n_lack)

length<=20,返回max(n_modify, n_lack)

length>20,此時一定要刪除字元的長度為n_delete = len(s) - 20

我們知道連續串可以通過刪除字元來減少n_modify。我們肯定優先刪除連續串。對於不同長度的連續串,有這樣的特性。

3n,刪除乙個字元,就可以減少一次替換

3n+1, 刪除兩個字元,減少一次替換

3n+2, 刪除三個字元,減少乙個替換

要使得最終結果最小,我們優先考慮3n,多出來的繼續考慮3n+1,和3n+2。最終剩下來的都是3n+2,即如果還有剩餘就全部用來減少3n+2的替換次數

python

class solution:

def strongpasswordchecker(self, s: str) -> int:

cnt = [0]*3 # 3n, 3n+1, 3n+2

a , a, num = 1, 1, 1

i = 0

n_modify = 0

while i < len(s):

c = s[i]

length = 1

if s[i] >= '0' and s[i] <= '9':

num = 0

elif s[i] >= 'a' and s[i] <= 'z':

a = 0

elif s[i] >= 'a' and s[i] <= 'z':

a = 0

i += 1

while i < len(s) and s[i] == c:

i += 1

length += 1

if length >= 3:

n_modify += length//3

cnt[length%3] += 1

n_lack = a + a + num

if len(s) < 6:

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

if len(s) <= 20:

return max(n_lack, n_modify)

n_delete = len(s) - 20

if n_delete <= cnt[0]:

return max(n_modify - n_delete, n_lack) + n_delete

if (n_delete - cnt[0]) <= 2*cnt[1]:

return max(n_modify - cnt[0]- (n_delete-cnt[0])//2, n_lack) + n_delete

if (n_delete - cnt[0] - 2*cnt[1]) <= 3 * cnt[2]:

return max(n_modify - cnt[0] - cnt[1]- (n_delete - cnt[0] - 2*cnt[1])//3, n_lack)

+ n_delete;

return max(n_modify - cnt[0] - cnt[1] - cnt[2] - (n_delete - cnt[0] - 2*cnt[1]

-3*cnt[2])//3, n_lack) + n_delete;

前5強密碼

許多使用者由於密碼結構不良而被破解,在這裡我總結了我所知道的最強密碼中的5個。希望能有所幫助。將部分2或3或什至4個無關的單詞組合在一起 混合使用大寫和小寫 例如,將這些單詞 如 diamond blog security 組合在一起,成為 diamblosecu 將單詞與數字和 將大寫和小寫字母混...

安全密碼哪樣強?聊聊密碼方面的那

對於密碼的由來,一度被認為最早源於古希臘,用於為戰爭中資訊交換提供的保密措施。事實上在西元前3000年前古埃及就出現了具有密碼功能的符號。當時在墓碑上的象形文本已經開始用特殊加密過的內容表示。直到今天,密碼幾乎 和每個人都有著緊密的聯絡,乙個人每天不知道要輸入多少個密碼。而隨著科技的發展,代替密碼的...

Javascript 評估使用者輸入密碼的強度

什麼是乙個安全的密碼呢?1.如果密碼少於5位,那麼就認為這是乙個弱密碼.2.如果密碼只由數字 小寫字母 大寫字母或其它特殊符號當中的一種組成,則認為這是乙個弱密碼.3.如果密碼由數字 小寫字母 大寫字母或其它特殊符號當中的兩種組成,則認為這是乙個中度安全的密碼.4.如果密碼由數字 小寫字母 大寫字母...