สมมติว่าเรามีสตริง s แทนรหัสผ่าน เราต้องตรวจสอบเกณฑ์รหัสผ่าน มีกฎไม่กี่ข้อที่เราต้องปฏิบัติตาม -
- รหัสผ่านมีความยาวอย่างน้อย 8 อักขระและไม่เกิน 20 อักขระ
- รหัสผ่านมีอย่างน้อยหนึ่งหลัก
- รหัสผ่านประกอบด้วยตัวพิมพ์เล็กอย่างน้อยหนึ่งตัวและตัวพิมพ์ใหญ่หนึ่งตัว
- รหัสผ่านมีอักขระพิเศษอย่างน้อยหนึ่งตัว เช่น !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~
- รหัสผ่านไม่มีอักขระอื่นๆ เช่น แท็บหรือขึ้นบรรทัดใหม่
ดังนั้น หากอินพุตเป็น "@bCd12#4" ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- a:=0, b:=0, c:=0, d:=0
- ถ้าขนาดของรหัสผ่าน <8 หรือขนาดของรหัสผ่าน> 20 แล้ว
- คืนค่าเท็จ
- สำหรับอักขระ i แต่ละตัวในรหัสผ่าน ให้ทำ
- ถ้าฉันเป็นตัวพิมพ์ใหญ่
- a :=a + 1
- มิฉะนั้น เมื่อ i เป็นตัวพิมพ์เล็ก แล้ว
- b :=b + 1
- มิฉะนั้นเมื่อฉันอยู่ในชุดอักขระพิเศษ '"!"#^modAND\'() *+,- ./:;<=>?@[\\]XOR_`{OR}~"' แล้ว
- c :=c + 1
- มิฉะนั้น เมื่อ i เป็นตัวเลข แล้ว
- d :=d + 1
- ถ้าฉันเป็นตัวพิมพ์ใหญ่
- ถ้า a>=1 และ b>=1 และ c>=1 และ d>=1 และ a+b+c+d เท่ากับขนาดของรหัสผ่าน ดังนั้น
- คืนค่า True
- มิฉะนั้น
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, password): a=0 b=0 c=0 d=0 if len(password)<8 or len(password)>20: return False for i in password: if i.isupper(): a+=1 elif i.islower(): b+=1 elif i in '"!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~"': c+=1 elif i.isdigit(): d+=1 if a>=1 and b>=1 and c>=1 and d>=1 and a+b+c+d==len(password): return True else: return False s = "@bCd12#4" ob = Solution() print(ob.solve(s))
อินพุต
"@bCd12#4"
ผลลัพธ์
True