अनुवर्ती
इस समस्या के उद्देश्य के लिए, हम एक अनुक्रम को एक अनुक्रम के रूप में परिभाषित करते हैं जिसे शेष तत्वों के क्रम को बदले बिना कुछ वर्णों को हटाकर एक अनुक्रम से प्राप्त किया जा सकता है। कोई भी स्ट्रिंग अपने आप में एक परवर्ती होती है और एक खाली स्ट्रिंग किसी भी स्ट्रिंग का परवर्ती होती है।
समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो स्ट्रिंग्स की एक सरणी को एकमात्र तर्क के रूप में लेता है। हमारे फ़ंक्शन को उनमें से सबसे लंबे असामान्य बाद की लंबाई खोजने की जरूरत है।
सबसे लंबे समय तक असामान्य अनुक्रम से हमारा मतलब है, सरणी में किसी एक स्ट्रिंग का सबसे लंबा अनुक्रम और यह बाद में सरणी में अन्य स्ट्रिंग्स का कोई भी क्रम नहीं होना चाहिए।
यदि कोई असामान्य अनुवर्ती मौजूद नहीं है, तो हमें -1 लौटना चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = ["aba", "cdc", "eae"];
तब आउटपुट होना चाहिए -
const output = 3;
आउटपुट स्पष्टीकरण:
"एबीए", "सीडीसी" और "ईएई" लंबाई 3 के सभी मान्य असामान्य अनुवर्ती हैं।
उदाहरण
इसके लिए कोड होगा -
const arr = ["aba", "cdc", "eae"]; const longestUncommon = (strs) => { const map = {}; const arr = []; let max = -1; let index = -1; for(let i = 0; i < strs.length; i++){ map[strs[i]] = (map[strs[i]] || 0) + 1; if(map[strs[i]] > 1){ if(max < strs[i].length){ max = strs[i].length index = i; } } } if(index === -1) { strs.forEach(el =>{ if(el.length > max) max = el.length; }) return max; } for(let i = 0; i < strs.length; i++){ if(map[strs[i]] === 1) arr.push(strs[i]); } max = -1 for(let i = arr.length - 1; i >= 0; i--){ let l = arr[i]; let d = 0; for(let j = 0; j < strs[index].length; j++){ if(strs[index][j] === l[d]){ d++; } } if(d === l.length){ let temp = arr[i]; arr[i] = arr[arr.length - 1]; arr[arr.length - 1] = temp; arr.pop(); } } arr.forEach(el =>{ if(el.length > max) max = el.length; }) return max; }; console.log(longestUncommon(arr));
आउटपुट
और कंसोल में आउटपुट होगा -
3