সমস্যা বিবরণ
একটি লাইসেন্স প্লেট স্ট্রিং এবং শব্দের লিস্ট দেওয়া থাকে। লাইসেন্স প্লেটে থাকা সব অক্ষর (কেস-ইনসেনসিটিভ, ডিজিট/স্পেস বাদ) সমाहিত করে এমন সবচেয়ে ছোট শব্দ খুঁজে বের করুন। একাধিক হলে প্রথমেটা রিটার্ন করুন।
উদাহরণ
licensePlate = "1s3 PSt", words = ["step","steps","stripe","stepple"] → আউটপুট: "steps"
লাইসেন্স প্লেটের অক্ষর: s, p, s, t (২টি s, ১টি p, ১টি t)। "steps"-এ এগুলো আছে এবং এটি সবচেয়ে ছোট।
এলগরিদম
- লাইসেন্স প্লেট থেকে শুধু অক্ষরগুলো বের করে ছোট হাতের (lowercase) রেখুন।
- প্রতিটি শব্দের জন্য চেক করুন যে লাইসেন্স প্লেটের প্রতিটি অক্ষর उतनी বার আছে কিনা (
word.count(c) >= required.count(c))। - বৈধ শব্দগুলো থেকে সবচেয়ে ছোটটি (
min(valid, key=len)) রিটার্ন করুন।
পাইথন বাস্তবায়ন
class Solution:
def shortestCompletingWord(self, licensePlate, words):
import string
letters = [c.lower() for c in licensePlate if c.lower() in string.ascii_lowercase]
valid = []
for w in words:
if all(letters.count(c) <= w.count(c) for c in set(letters)):
valid.append(w)
return min(valid, key=len)
ob = Solution()
print(ob.shortestCompletingWord("1s3 PSt", ["step","steps","stripe","stepple"])) # steps
ইনপুট / আউটপুট
ইনপুট: "1s3 PSt", ["step","steps","stripe","stepple"] আউটপুট: steps