मान लीजिए हमारे पास अल्फान्यूमेरिक मानों और प्रतीकों के साथ एक स्ट्रिंग है। लोअरकेस और अपरकेस अक्षर भी हैं। हमें जांचना है कि क्या स्ट्रिंग केवल लोअरकेस अक्षरों को ध्यान में रखते हुए पालिंड्रोम बना रही है या नहीं (अपरकेस को लोअरकेस में बदल दिया जाएगा), अन्य प्रतीकों जैसे कॉमा, स्पेस को नजरअंदाज किया जाएगा।
मान लीजिए स्ट्रिंग "A Man, a Plan, a Canal: Panama" जैसी है, तो इन नियमों को ध्यान में रखते हुए, यह "amanaplanacanalpanama" बनेगी। यह एक पालिंड्रोम है।
हल करने के चरण
- x = "" परिभाषित करें
- str में प्रत्येक वर्ण c पढ़ें
- यदि c लोअरकेस अक्षर या संख्या है, तो c को x में जोड़ें
- अन्यथा c अपरकेस अक्षर है, तो बस इसे लोअरकेस में बदलें और x के बाद जोड़ें
- यदि x पालिंड्रोम है, तो True वापस करें, अन्यथा False
उदाहरण
बेहतर समझ के लिए कार्यान्वयन देखें:
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
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