समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो पहली आर्ग्युमेंट के रूप में एक यादृच्छिक अंग्रेजी वर्णमाला स्ट्रिंग str और दूसरी आर्ग्युमेंट के रूप में स्ट्रिंग्स की एक सरणी arr लेता है।
हमारे फ़ंक्शन का कार्य स्ट्रिंग str से कुछ अक्षरों को हटाकर यह जांचना है कि कौन सा सबसे लंबा शब्द बनाया जा सकता है जो सरणी arr में भी मौजूद हो। फ़ंक्शन को सबसे लंबी संभव स्ट्रिंग वापस करनी चाहिए।
यदि ऐसा कोई स्ट्रिंग मौजूद नहीं है, तो हमें खाली स्ट्रिंग वापस करनी चाहिए।
उदाहरण
यदि फ़ंक्शन का इनपुट है:
const str = 'sdgfdfghdjh'; const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl'];
तो आउटपुट होना चाहिए:
const output = 'gfdfg';
आउटपुट व्याख्या:
हालांकि सरणी का पहला और दूसरा तत्व स्ट्रिंग से अक्षरों को हटाकर बनाया जा सकता है लेकिन 'gfdfg' सबसे लंबा स्ट्रिंग (5) है जिसे हम स्ट्रिंग 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