मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है। हमें जांचना है कि एक वर्ण हटाने के बाद सभी वर्णों की आवृत्ति समान है या नहीं।
इसलिए, यदि इनपुट s = "abbc" है, तो आउटपुट True होगा क्योंकि हम एक b हटाकर स्ट्रिंग "abc" प्राप्त कर सकते हैं जहां प्रत्येक तत्व की आवृत्ति 1 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- occurrence := s के सभी वर्णों और उनकी आवृत्तियों वाला मैप
- यदि s में सभी वर्णों की घटनाएं समान हैं, तो
- True लौटाएं
- s में प्रत्येक char के लिए, करें
- occurrence[char] := occurrence[char] - 1
- यदि s में सभी वर्णों की घटनाएं समान हैं, तो
- True लौटाएं
- occurrence[char] := occurrence[char] + 1
- False लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
from collections import defaultdict
def allSame(occurrence):
counts = list(occurrence.values())
return all(element == counts[0] for element in counts)
def solve(s):
occurrence = defaultdict(int)
for char in s:
occurrence[char] += 1
if allSame(occurrence):
return True
for char in s:
occurrence[char] -= 1
if allSame(occurrence):
return True
occurrence[char] += 1
return False
s = "abbc"
print(solve(s))
इनपुट
"abbc"
आउटपुट
True