मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग है; हमें जांचना है कि क्या हम स्ट्रिंग को मध्य से विभाजित कर सकते हैं जिससे दो हिस्से मिलें जिनमें कम से कम एक वर्ण का अंतर हो। यह अलग वर्ण हो सकते हैं या प्रत्येक वर्ण की अलग आवृत्ति। यदि स्ट्रिंग विषम लंबाई की है, तो मध्य तत्व को अनदेखा करें और शेष तत्वों की जांच करें।
उदाहरण के लिए, यदि s = "helloohekk" है, तो आउटपुट True होगा क्योंकि बायां भाग "hello" और दायां भाग "ohekk" अलग हैं।
हल करने का तरीका
- left_freq := खाली मैप, right_freq := खाली मैप
- n := s का आकार
- 0 से n//2 - 1 तक left_freq में आवृत्ति गिनें
- n//2 से n-1 तक right_freq में आवृत्ति गिनें
- s के प्रत्येक वर्ण के लिए: यदि right_freq[char] ≠ left_freq[char], तो True लौटाएं
- False लौटाएं
उदाहरण
from collections import defaultdict
def solve(s):
left_freq = defaultdict(int)
right_freq = defaultdict(int)
n = len(s)
for i in range(n // 2):
left_freq[s[i]] += 1
for i in range(n // 2, n):
right_freq[s[i]] += 1
for char in s:
if right_freq[char] != left_freq[char]:
return True
return False
s = "helloohekk"
print(solve(s))
इनपुट
"helloohekk"
आउटपुट
True