मान लीजिए कि हमारे पास लोअरकेस वर्णों की एक स्ट्रिंग है (सभी 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