वर्ड चेन
मान लें कि शब्द 1 शब्द 2 का पूर्ववर्ती है यदि और केवल तभी हम शब्द 1 में कहीं भी एक अक्षर जोड़ सकते हैं ताकि इसे शब्द 2 के बराबर बनाया जा सके। उदाहरण के लिए, "abc" "abac" का पूर्ववर्ती है।
शब्द शृंखला शब्दों का एक क्रम है [word_1, word_2, ..., word_k] k>=1 के साथ, जहां word_1, word_2 का पूर्ववर्ती है, word_2, word_3 का पूर्ववर्ती है, इत्यादि।
समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो स्ट्रिंग्स की एक सरणी लेता है, एआर, पहले और एकमात्र तर्क के रूप में।
सरणी गिरफ्तारी में प्रत्येक स्ट्रिंग में अंग्रेजी के लोअरकेस अक्षर होते हैं। हमारे फ़ंक्शन को दिए गए सरणी से चुने गए शब्दों के साथ शब्द श्रृंखला की सबसे लंबी संभव लंबाई लौटानी चाहिए, गिरफ्तारी।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = ["a","b","ba","bca","bda","bdca"];
तब आउटपुट होना चाहिए -
const output = 4;
आउटपुट स्पष्टीकरण:
सबसे लंबी शब्द श्रृंखलाओं में से एक "a", "ba", "bda", "bdca" है।
उदाहरण
इसके लिए कोड होगा -
const arr = ["a","b","ba","bca","bda","bdca"]; const longestStrChain = (arr) => { arr.sort((a, b) => a.length - b.length); const isPredecessor = (word1 = '', word2 = '') => { if(Math.abs(word1.length - word2.length) !== 1){ return false; }; for(let i = 0; i < word2.length; i++){ const word = word2.slice(0, i) + word2.slice(i + 1); if(word === word1){ return true; }; }; return false; }; const array = []; let max = 0; for(let i = arr.length - 1; i >= 0; i--){ array[i] = 1; for(let j = arr.length - 1; j > i; j--){ if(isPredecessor(arr[i], arr[j])){ array[i] = Math.max( array[i], 1 + array[j], ); }; }; max = Math.max(max, array[i]); }; return max; }; console.log(longestStrChain(arr));
आउटपुट
और कंसोल में आउटपुट होगा -
4