मान लीजिए हमारे पास समान लंबाई के दो गैर-खाली स्ट्रिंग्स s और t हैं। हमें उन्हें सबस्ट्रिंग्स में विभाजित करना है ताकि s और t के प्रत्येक जोड़ी सबस्ट्रिंग का आकार समान हो और वे एक-दूसरे के एनाग्राम हों। अब उन कट इंडेक्स को ढूंढें जिनसे s और t के अधिकतम कट्स प्राप्त हों। यदि कोई परिणाम न मिले, तो खाली सूची लौटाएं।
उदाहरण के लिए, यदि इनपुट है s = "bowcattiger", t = "owbactietgr", तो आउटपुट होगा [0, 3, 5, 6, 10], क्योंकि हम स्ट्रिंग को 5 विभाजनों में बांट सकते हैं जहां प्रत्येक स्ट्रिंग एक-दूसरे की एनाग्राम है:
s = ["bow", "ca", "t", "tige", "r"]t = ["owb", "ac", "t", "ietg", "r"]
हल करने के चरण
intervals:= एक नई सूची।cs:=sमें मौजूद वर्णों और उनकी आवृत्ति का मैप।ct:=tमें मौजूद वर्णों और उनकी आवृत्ति का मैप।- यदि
cs,ctके समान नहीं है, तो खाली सूची लौटाएं। xकोsके आकार - 1 से 0 तक घटाते हुए:cs[s[x]] := cs[s[x]] - 1ct[t[x]] := ct[t[x]] - 1- यदि
cs,ctके समान है, तोxकोintervalsके अंत में डालें।
intervalsसूची को क्रमबद्ध करके लौटाएं।
उदाहरण
from collections import Counter
class Solution:
def solve(self, a, b):
intervals = []
ca = Counter(a)
cb = Counter(b)
if ca != cb:
return []
for x in reversed(range(len(a))):
ca[a[x]] -= 1
cb[b[x]] -= 1
if ca == cb:
intervals.append(x)
return sorted(intervals)
ob = Solution()
s = "bowcattiger"
t = "owbactietgr"
print(ob.solve(s, t))
इनपुट
"bowcattiger", "owbactietgr"
आउटपुट
[0, 3, 5, 6, 10]