मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें जांचना है कि दिए गए स्ट्रिंग के वर्णों को फेरबदल करके पालिंड्रोम बनाया जा सकता है या नहीं।
उदाहरण के लिए, यदि s = "raaecrc" है, तो आउटपुट True होगा क्योंकि हम इसे "racecar" में पुनर्व्यवस्थित कर सकते हैं जो एक पालिंड्रोम है।
हल करने का तरीका
- freq := s में सभी वर्णों और उनकी आवृत्तियों का मैप
- odd_count := 0
- freq के प्रत्येक मान के लिए:
- यदि मान विषम है, तो odd_count बढ़ाएं
- यदि odd_count > 1, तो False लौटाएं
- True लौटाएं
एक स्ट्रिंग पालिंड्रोम बना सकती है यदि अधिकतम एक वर्ण की आवृत्ति विषम हो।
उदाहरण
from collections import defaultdict
def solve(st):
freq = defaultdict(int)
for char in st:
freq[char] += 1
odd_count = 0
for i in freq.values():
if i % 2 == 1:
odd_count += 1
if odd_count > 1:
return False
return True
s = "raaecrc"
print(solve(s))
इनपुट
"raaecrc"
आउटपुट
True