কখনও কখনও লোকেরা অতিরিক্ত অনুভূতির প্রতিনিধিত্ব করতে অক্ষর পুনরাবৃত্তি করে, যেমন "হ্যালো" −> "হিইল্লু", "হাই" −> "হিইআই"। "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