पैलिंड्रोम क्या है?
पैलिंड्रोम एक स्ट्रिंग है जो बाएं से दाएं या दाएं से बाएं पढ़ने पर समान होती है। दूसरे शब्दों में, पैलिंड्रोम स्ट्रिंग वह होती है जिसका उल्टा मूल स्ट्रिंग के बराबर होता है।
उदाहरण के लिए, सिविक, मैडम पैलिंड्रोम हैं।
बिल्ली पालिंड्रोम नहीं है। चूंकि इसका उल्टा टीएसी है, जो मूल स्ट्रिंग (बिल्ली) के बराबर नहीं है।
इनपुट स्ट्रिंग पैलिंड्रोम है या नहीं, यह जानने के लिए एक प्रोग्राम लिखें।
विधि 1 - स्ट्रिंग का उल्टा पता लगाएं
-
कार्यक्रम में आवश्यक मुख्य चीज स्ट्रिंग के विपरीत को खोजना है।
-
एक स्ट्रिंग को उलटने के किसी भी तरीके का उपयोग करके रिवर्स पाया जा सकता है। हम स्ट्रिंग को उलटने के लिए सरल टुकड़ा करने की विधि का उपयोग करेंगे। इनबिल्ट ''.join(reversed()) का भी उपयोग किया जा सकता है। हालांकि स्ट्रिंग को उलटने के और भी तरीके हैं, हम एक आसान तरीका अपनाएंगे।
-
उल्टे स्ट्रिंग की मूल स्ट्रिंग से तुलना करें।
-
यदि दोनों तार समान हैं, तो सही लौटें, अन्यथा झूठी वापसी करें।
उदाहरण
def isPalindrome(s): rev=s[::-1] if(rev==s): return True return False print("Enter a string") st=input() print(isPalindrome(st))
आउटपुट
Enter a string madam True
विधि 2 - स्ट्रिंग का उल्टा पता लगाए बिना
विचार यह है कि स्ट्रिंग के पहले और आखिरी इंडेक्स में वर्णों की लगातार तुलना करें जब तक कि वे असमान न हों।
हम दो उदाहरण देखेंगे बिना किसी स्ट्रिंग का उल्टा खोजे -
स्ट्रिंग मान "मैडम":
-
हम पहले और अंतिम वर्णों की तुलना करते हैं जो समान हैं, आगे हम दूसरे और दूसरे अंतिम वर्णों की तुलना करते हैं जो फिर से समान हैं। अंत में हम केवल एक चरित्र के साथ बचे हैं। इस प्रकार, स्ट्रिंग एक पैलिंड्रोम है।
स्ट्रिंग मान "रीडर":
-
वर्ण दूसरे और दूसरे अंतिम तत्व के बीच तुलना तक बराबर हैं।
जब तीसरे और तीसरे अंतिम वर्णों की तुलना की जाती है, तो वे समान नहीं होते हैं, इसलिए यह पैलिंड्रोम नहीं है।
-
हम इस विचार को रिकर्सन या दो पॉइंटर्स का उपयोग करके कार्यान्वित कर सकते हैं। हम दो पॉइंटर्स का उपयोग करके कार्यान्वित करेंगे। हम 0 पर प्रारंभ सूचक से प्रारंभ करते हैं और अंतिम अनुक्रमणिका पर अंत सूचक से प्रारंभ करते हैं। हम तुलना करना शुरू करते हैं और यदि वर्ण समान हैं, तो हम प्रारंभ सूचक और घटते अंत सूचक को बढ़ाते हैं (इस प्रकार उन्हें दूसरे और दूसरे अंतिम वर्ण और इसी तरह लाते हैं)।
-
हम झूठे कब लौटते हैं? यदि हम पाते हैं कि पॉइंटर्स के किसी भी सेट के लिए वर्ण समान नहीं हैं, तो हमें और इंडेक्स की तलाश करने की आवश्यकता नहीं है और हम False वापस कर सकते हैं।
-
हम सच कब लौटते हैं? दूसरे मामले में, यदि स्ट्रिंग एक पैलिंड्रोम है, तो हम ट्रू वापस आ जाएंगे जब दोनों पॉइंटर्स समान हो जाते हैं (केवल 1 कैरेक्टर चेक करने के लिए बचा है) या स्टार्ट पॉइंटर एंड पॉइंटर से अधिक हो जाता है (सभी कैरेक्टर चेक किए जाते हैं) और इसलिए सही लौटते हैं।पी>
उदाहरण
def isPalindrome(s): rev=s[::-1] if(rev==s): return True return False print("Enter a string") st=input() print(isPalindrome(st))
आउटपुट
Enter a string reader False >>> Enter a string madam True