সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি র্যান্ডম ইংরেজি অ্যালফাবেট স্ট্রিং str প্রথম আর্গুমেন্ট ও একটি স্ট্রিং অ্যারে arr دومা আর্গুমেন্ট হিসেবে নেবে।
ফাংশনটির কাজ হলো str-র কিছু ক্যারেক্টার ডিলিট করে কোন শব্দ বানানো যায় যা arr-তে ও আছে, সেই সবচেয়ে লম্বা শব্দটি রিটার্ন করা। যদি এমন কোনো শব্দ না থাকে, তবে খালি স্ট্রিং রিটার্ন করবে।
উদাহরণ:
const str = 'sdgfdfghdjh'; const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl'];
আউটপুট হবে:
const output = 'gfdfg';
আউটপুট ব্যাখ্যা:
যদিও অ্যারেতে প্রথম ও دومা এলিমেন্ট বানানো যায়, কিন্তু 'gfdfg' সবচেয়ে লম্বা (৫ অক্ষর) যা str থেকে বানানো সম্ভব।
উদাহরণ
কোডটি নিচের মতো:
const str = 'sdgfdfghdjh'; const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl']; const findLongestWord = (str = '', arr = []) => { arr.sort((a, b) => { if (a.length !== b.length) { return b.length - a.length; }; return a.localeCompare(b); }); for(const word of arr){ let index = -1; for(const char of word){ index = str.indexOf(char, index + 1); if(index < 0){ break; }; }; if (index >= 0){ return word; }; }; return ''; }; console.log(findLongestWord(str, arr)); কোড ব্যাখ্যা:
ধাপগুলো হলো:
অ্যারে arr কে দৈর্ঘ্য ও লেক্সিক্যাল অর্ডারে সোর্ট করা।
arr-এর প্রতিটি শব্দের জন্য, যদি স্ট্রিং str-এ সব ক্যারেক্টার থাকে তবে রিটার্ন করুন।
যেহেতু ইতিমধ্যে সোর্ট করা আছে, প্রথম ম্যাচই উত্তর।
আউটপুট
কনসোলে আউটপুট:
gfdfg