मान लीजिए कि हमारे पास लोअरकेस वर्णों की एक स्ट्रिंग है (सभी ASCII वर्ण हैं), हमें दिए गए स्ट्रिंग के सभी अलग-अलग निरंतर पैलिंड्रोमिक उप-स्ट्रिंग खोजने होंगे।
इसलिए, यदि इनपुट "लेवल" जैसा है, तो आउटपुट 7 होगा क्योंकि सात सबस्ट्रिंग हैं ['लेवल', 'ईव', 'एल', 'ई', 'वी', 'ई', 'एल' ].
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एन:=26
-
n :=str की लंबाई
-
योग :=0
-
my_map :=आकार N की सूची और 0 से भरें
-
मेरे लिए 0 से n की सीमा में, करें
-
my_map[ASCII of (str[i]) - ASCII of ('a')] :=my_map[ASCII of (str[i]) - ASCII of ('a') ] + 1
-
-
मेरे लिए 0 से N की सीमा में, करें
-
अगर my_map[i] शून्य नहीं है, तो
-
योग :=योग +(my_map[i] *(my_map[i] + 1)/2)
-
-
-
वापसी राशि
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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