मान लीजिए हमारे पास लोअरकेस वर्णों की एक स्ट्रिंग है (सभी ASCII वर्ण हैं), हमें दी गई स्ट्रिंग के सभी विशिष्ट सतत पैलिंड्रोमिक सब-स्ट्रिंग्स ढूंढने हैं।
तो, यदि इनपुट "level" जैसा है, तो आउटपुट 7 होगा क्योंकि सात सबस्ट्रिंग्स हैं ['level', 'eve', 'l', 'e', 'v', 'e', 'l']।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
N := 26
n := str की लंबाई
sum := 0
my_map := आकार N की एक सूची और 0 से भरी हुई
i को 0 से n तक के लिए, करें:
my_map[ASCII of (str[i]) - ASCII of ('a')] := my_map[ASCII of (str[i]) - ASCII of ('a')] + 1
i को 0 से N तक के लिए, करें:
यदि my_map[i] शून्येतर है, तो:
sum := sum + (my_map[i] * (my_map[i] + 1) / 2)
sum लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
N = 26 def all_palindrome_substr_count(str): n = len (str) sum = 0 my_map = [0] * N for i in range(n): my_map[ord(str[i]) - ord('a')] += 1 for i in range(N) : if (my_map[i]): sum += (my_map[i] * (my_map[i] + 1) // 2) return sum str = "level" print (all_palindrome_substr_count(str))इनपुट
"level"
आउटपुट
7