मान लीजिए हमारे पास s नामक एक न्यूमेरिक स्ट्रिंग है। हमें जांचना है कि क्या कोई ऐसी व्यवस्था है जहां हमारे पास एक ही कैरेक्टर की एक जोड़ी हो और बाकी स्ट्रिंग एक ही कैरेक्टर्स के कितने भी ट्रिपलेट्स बना सके।
तो, यदि इनपुट s = "21133123" है, तो आउटपुट True होगा, क्योंकि दो 2s हैं जो "22" जोड़ी बनाते हैं और "111", "333" दो ट्रिपलेट्स के रूप में।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
d := s में मौजूद प्रत्येक एलिमेंट की फ्रीक्वेंसी वाली सूची
d में प्रत्येक k के लिए, करें
d[k] := d[k] - 2
यदि d में सभी i के लिए d[i] mod 3 शून्य है, तो
True लौटाएं
d[k] := d[k] + 2
False लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें
from collections import Counter
def solve(s):
d = Counter(s)
for k in d:
d[k] -= 2
if all(d[i] % 3 == 0 for i in d):
return True
d[k] += 2
return False
s = "21133123"
print(solve(s))
इनपुट
"21133123"
आउटपुट
True