關於華為面試題的密碼驗證程式

2021-08-21 13:47:08 字數 1058 閱讀 7900

這是一道華為面試題,不算太難,這所以把它寫在這篇部落格裡,是因為其採取了經典演算法中的分治策略,把它分為3個部分,當三個部分都滿足時,達到密碼的標準要求。

密碼要求:

1)長度不能少於八位。

2)必須用到數字、大寫字母、小寫字母及其他字元至少三種。

3)在不同位置不能出現連續兩次字元相等、長度大於2的字元。

def checklen(s):

if len(s) > 8:

return true

else:

return false

def check2(s):

flag_up, flag_low, flag_digit, flag_other = 0, 0, 0, 0

for i in s:

if i.isupper():

flag_up = 1

elif i.islower():

flag_low = 1

elif i.isdigit():

flag_digit = 1

else:

flag_other = 1

if (flag_up + flag_low + flag_digit + flag_other) >= 3:

return true

else:

return false

def check3(s):

for i in range(len(s) - 3):

if s.count(s[i:i + 3]) > 1:

# if s[i:i+3] == s[i+1:i+4]:

return false

return true

while true:

try:

s = input('please enter password:')

if checklen(s) and check2(s) and check3(s):

print("ok")

else:

print("ng")

except exception as e:

break

華為機試題 密碼驗證合格程式

描述 密碼要求 1.長度超過8位 2.包括大小寫字母.數字.其它符號,以上四種至少三種 3.不能有相同長度超2的子串重複 說明 長度超過2的子串 include include include include include include using namespace std int main ...

華為面試題

1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...

華為面試題

三 1 區域性變數能否和全域性變數重名?答案 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域...