একটি ওয়ার্ডস লিস্ট এবং একটি প্যাটার্ন দেওয়া আছে। ওয়ার্ডস লিস্টের কোন ওয়ার্ডগুলো প্যাটার্নের সাথে মেলে তা বের করতে হবে। একটি ওয়ার্ড প্যাটার্নের সাথে মেলে যদি অক্ষরগুলির একটি পারমুটেশন p থাকে যাতে প্যাটার্নের প্রতিটি x কে p(x) দিয়ে রিপ্লেস করলে টার্গেট ওয়ার্ড পাওয়া যায়।
ইনপুট ["abc","deq","mee","aqq","dkd","ccc"] এবং pattern "abb" হলে আউটপুট ["mee", "aqq"]। "ccc" মেলে না কারণ এটি পারমুটেশন নয়।
সমাধানের ধাপসমূহ
- convert() মেথড ডিফাইন করুন যা ওয়ার্ড নেয়:
- counter := 1, s := খালি স্ট্রিং
- s += counter স্ট্রিং
- i = 1 থেকে len(word)-1 পর্যন্ত:
- j := i-1
- যখন j >= 0: যদি word[j] == word[i] ব্রেক, j--
- যদি j > -1: s += s[j], অন্যথায় counter++, s += counter স্ট্রিং
- s রিটার্ন
- words_num := খালি অ্যারে, res := খালি অ্যারে
- words-এ প্রতিটি i-এর জন্য convert(i) words_num-এ অ্যাড
- pattern := convert(pattern)
- words-এ লুপ: যদি words_num[i] == pattern, words[i] res-এ অ্যাড
- res রিটার্ন
উদাহরণ
class Solution(object):
def findAndReplacePattern(self, words, pattern):
words_num = []
result = []
for i in words:
words_num.append(self.convert(i))
pattern = self.convert(pattern)
for i in range(len(words)):
if words_num[i] == pattern:
result.append(words[i])
return result
def convert(self, word):
counter = 1
s = ""
s += str(counter)
for i in range(1, len(word)):
j = i - 1
while j >= 0:
if word[j] == word[i]:
break
j -= 1
if j > -1:
s += s[j]
else:
counter += 1
s += str(counter)
return s
ob = Solution()
print(ob.findAndReplacePattern(["abc","deq","mee","aqq","dkd","ccc"], "abb"))
ইনপুট
["abc","deq","mee","aqq","dkd","ccc"] "abb"
আউটপুট
['mee', 'aqq']