समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो एक यादृच्छिक अंग्रेजी वर्णमाला स्ट्रिंग लेता है, 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));
कोड स्पष्टीकरण:
हम जिन चरणों से गुज़रे वे हैं -
-
सरणी को पहले लंबाई के आधार पर क्रमबद्ध करें, फिर शाब्दिक क्रम से।
-
एआर में प्रत्येक शब्द के माध्यम से लूप करें, यदि शब्द का प्रत्येक वर्ण स्ट्रिंग स्ट्र में नहीं है तो हम बस वापस आ जाते हैं।
-
और अगर हर शब्द मेल खाता है, तो हम शब्द वापस कर देते हैं।
और चूंकि हमने पहले ही अपने शब्दकोश को क्रमबद्ध कर लिया है, हम गारंटी दे सकते हैं कि पहला मैच हमारा उत्तर है।
आउटपुट
कंसोल में आउटपुट होगा -
gfdfg