কখনও কখনও লোকেরা অতিরিক্ত অনুভূতির প্রতিনিধিত্ব করতে অক্ষর পুনরাবৃত্তি করে, যেমন "হ্যালো" −> "হিইল্লু", "হাই" −> "হিইআই"। "heeellooo" এর মতো এই স্ট্রিংগুলিতে আমাদের কাছে সংলগ্ন অক্ষরগুলির গ্রুপ রয়েছে যেগুলি সব একই:"h", "eee", "ll", "ooo"৷
কিছু প্রদত্ত স্ট্রিং S-এর জন্য, একটি ক্যোয়ারী শব্দ প্রসারিত হয় যদি নিম্নলিখিত এক্সটেনশন অপারেশনের যেকোন সংখ্যক অ্যাপ্লিকেশন দ্বারা এটিকে S-এর সমান করা যায়:c অক্ষর সমন্বিত একটি গ্রুপ বেছে নিন এবং গ্রুপে কিছু সংখ্যক অক্ষর c যোগ করুন যাতে গ্রুপের আকার 3 বা তার বেশি হয়।
উদাহরণস্বরূপ, "হ্যালো" দিয়ে শুরু করে, "হ্যালো" পেতে আমরা "ও" গ্রুপে একটি এক্সটেনশন করতে পারি, কিন্তু "ওও" গ্রুপের আকার 3-এর কম হওয়ায় আমরা "হ্যালো" পেতে পারি না। এছাড়াও, আমরা করতে পারি "helllllooo" পেতে "ll" −> "lllll" এর মতো আরেকটি এক্সটেনশন। যদি S ="helllllooo", তাহলে এই দুটি এক্সটেনশন অপারেশনের কারণে "hello" কোয়েরি শব্দটি প্রসারিত হবে:query ="hello" −> "hellooo" −> "helllllooo" =S.
ক্যোয়ারী শব্দের একটি তালিকা দেওয়া হলে, আমাদের প্রসারিত শব্দের সংখ্যা ফেরত দিতে হবে।
যেমন −
যদি ইনপুট স্ট্রিং −
হয়const str = 'heeellooo';
এবং শব্দের তালিকা হল −
const words = ["hello", "hi", "helo"];
এবং আউটপুট −
হওয়া উচিতconst output = 1
উদাহরণ
এর জন্য কোড হবে −
const str = 'heeellooo';
const words = ["hello", "hi", "helo"];
const extraWords = (str, words) => {
let count = 0;
for (let w of words) {
let i = 0;
let j = 0;
for (; i < str.length && j < w.length && w[j] === str[i];) {
let lenS = 1;
let lenW = 1;
for (; i+lenS < str.length && str[i+lenS] === str[i]; lenS++);
for (; j+lenW < w.length && w[j+lenW] === w[j]; lenW++);
if (lenS < lenW || lenS > lenW && lenS < 3) break;
i += lenS;
j += lenW;
}
if (i === str.length && j === w.length) {
count++;
}
}
return count;
}
console.log(extraWords(str, words)); আউটপুট
এবং কনসোলে আউটপুট হবে −
1