मान लीजिए कि हमारे पास एक स्ट्रिंग है, जो एक पासवर्ड का प्रतिनिधित्व करता है, हमें पासवर्ड मानदंड की जांच करनी है। कुछ नियम हैं, जिनका हमें पालन करना है -
- पासवर्ड की लंबाई कम से कम 8 वर्णों और अधिकतम 20 वर्णों की होगी।
- पासवर्ड में कम से कम एक अंक होता है
- पासवर्ड में कम से कम एक लोअरकेस कैरेक्टर और एक अपरकेस कैरेक्टर हो
- पासवर्ड में कम से कम एक विशेष वर्ण होता है जैसे !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~
- पासवर्ड में टैब या नई लाइन जैसा कोई अन्य वर्ण शामिल नहीं है।
इसलिए, अगर इनपुट "@bCd12#4" जैसा है, तो आउटपुट ट्रू होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- a:=0, b:=0, c:=0, d:=0
- यदि पासवर्ड का आकार <8 या पासवर्ड का आकार> 20 है, तो
- झूठी वापसी
- पासवर्ड में प्रत्येक वर्ण के लिए, करें
- यदि मैं अपरकेस अक्षर है, तो
- a :=a + 1
- अन्यथा जब i लोअरकेस अक्षर है, तब
- b :=b + 1
- अन्यथा जब मैं विशेष वर्णों के इन सेट में '"!"#^modAND\'() *+,- ./:;<=>?@[\\]XOR_`{OR}~"', तब
- c :=c + 1
- अन्यथा जब मैं एक अंक हूं, तब
- d :=d + 1
- यदि मैं अपरकेस अक्षर है, तो
- अगर a>=1 और b>=1 और c>=1 और d>=1 और a+b+c+d पासवर्ड के आकार के समान है, तो
- सही लौटें
- अन्यथा,
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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