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