मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें उन तरीकों की संख्या ढूंढनी है जिनसे हम s के बाएं और दाएं पक्षों को ट्रिम करके एक पैलिंड्रोम प्राप्त कर सकते हैं।
तो, यदि इनपुट s = "momo" जैसा है, तो आउटपुट 6 होगा, क्योंकि आप ["mom", "omo", "o", "o", "m", "m", "o"] प्राप्त कर सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- expand() फ़ंक्शन परिभाषित करें। यह i, j, s लेगा
- c := 0
- जब i >= 0 और j < s का आकार और s[i], s[j] के समान हो, तो करें
- i := i - 1, j := j + 1
- c := c + 1
- c लौटाएं
- मुख्य मेथड से, निम्नलिखित करें
- c := 0
- i को 0 से s के आकार तक की रेंज में लिए, करें
- c := c + expand(i, i, s)
- c := c + expand(i, i + 1, s)
- c लौटाएं
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
def expand(i, j, s):
c = 0
while i >= 0 and j < len(s) and s[i] == s[j]:
i -= 1
j += 1
c += 1
return c
class Solution:
def solve(self, s):
c = 0
for i in range(len(s)):
c += expand(i, i, s)
c += expand(i, i + 1, s)
return c
ob = Solution()
s = "momo"
print(ob.solve(s))
इनपुट
"momo"
आउटपुट
6