समस्या विवरण
एक स्ट्रिंग दी गई है, हमारा कार्य यह जांचना है कि स्ट्रिंग के दोनों हिस्सों में समान वर्ण सेट है या नहीं। इस समस्या को हल करने के लिए हम पहले स्ट्रिंग को बीच से विभाजित करते हैं, ताकि दो हिस्से मिलें। अब हम जांचते हैं कि दोनों हिस्सों में समान वर्ण सेट है या नहीं। यदि स्ट्रिंग की लंबाई सम नहीं है तो मध्य तत्व को अनदेखा करें और बाकी के लिए जांचें।
एल्गोरिदम
- एक स्ट्रिंग दी गई है।
- इनपुट स्ट्रिंग को दो भागों में विभाजित करें।
- फिर दोनों भागों को Counter(इटरेटर) विधि का उपयोग करके डिक्शनरी में बदलें। प्रत्येक डिक्शनरी में वर्ण कुंजी के रूप में और आवृत्ति मान के रूप में होती है।
- अब इन दो डिक्शनरी की तुलना करें। यहां हम == ऑपरेटर का उपयोग करते हैं। पहले हम जांचते हैं कि दोनों डिक्शनरी की कुंजियां समान हैं या नहीं, फिर प्रत्येक कुंजी के मानों की जांच करते हैं। यदि दोनों मामले सही हैं तो दोनों हिस्सों में समान वर्ण सेट है।
उदाहरण कोड
from collections import Counter
def checkhalves(input):
length = len(input)
if (length % 2 != 0):
first = input[0:int(length / 2)]
second = input[(int(length / 2)) + 1:]
else:
first = input[0:int(length / 2)]
second = input[int(length / 2):]
if Counter(first) == Counter(second):
print("दोनों हिस्से समान हैं")
else:
print("दोनों हिस्से समान नहीं हैं")
# ड्राइवर प्रोग्राम
if __name__ == "__main__":
input = input("स्ट्रिंग दर्ज करें")
checkhalves(input)
आउटपुट
स्ट्रिंग दर्ज करें abba
दोनों हिस्से समान हैं