मान लीजिए कि हमारे पास अल्फ़ान्यूमेरिक मानों और प्रतीकों वाली एक स्ट्रिंग है। लोअर केस और अपरकेस अक्षर भी हैं। हमें यह जांचना होगा कि स्ट्रिंग केवल लोअरकेस अक्षरों पर विचार करके एक पैलिंड्रोम बना रही है या नहीं (अपरकेस को लोअर केस में बदल दिया जाएगा), कॉमा, स्पेस जैसे अन्य प्रतीकों को अनदेखा कर दिया जाएगा।
मान लीजिए कि स्ट्रिंग "एक आदमी, एक योजना, एक नहर:पनामा" की तरह है, तो इन नियमों पर विचार करके, यह "अमनप्लानाकनालपनामा" होगा। यह एक पालिंड्रोम है।
इसे हल करने के लिए, इन चरणों का पालन करें -
- x ="" परिभाषित करें
- str −
- . में प्रत्येक वर्ण c को पढ़ें
- यदि c लोअरकेस अक्षर या संख्या है, तो c को x में जोड़ें
- अन्यथा c एक अपरकेस अक्षर है, तो बस इसे लोअरकेस में बदलें और x के बाद संलग्न करें
- यदि x एक पैलिंड्रोम है, तो सही है, अन्यथा गलत है
उदाहरण
आइए इसे बेहतर ढंग से समझने के लिए कार्यान्वयन देखें
class Solution(object): def isPalindrome(self, s): """ :type s: str :rtype: bool """ x = "" diff = ord('a') - ord('A') for i in s: if ord(i)>=ord('a') and ord(i)<=ord('z') or ord(i)>=ord("0") and ord(i)<=ord("9"): x+=i elif ord(i)>=ord('A') and ord(i)<=ord('Z'): i = chr(diff+ord(i)) x+=i #print(s) #print(x) return x == x[::-1] ob1 = Solution() print(ob1.isPalindrome("A Man, a Plan, a Canal: Panama"))
इनपुट
s = "A Man, a Plan, a Canal: Panama"
आउटपुट
true