這是一道華為面試題,不算太難,這所以把它寫在這篇部落格裡,是因為其採取了經典演算法中的分治策略,把它分為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 區域性變數能否和全域性變數重名?答案 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域...