सबसीक्वेंस
इस समस्या के उद्देश्य के लिए, हम एक सबसीक्वेंस को एक अनुक्रम के रूप में परिभाषित करते हैं जिसे कुछ अक्षरों को हटाकर बिना शेष तत्वों के क्रम को बदले एक अनुक्रम से प्राप्त किया जा सकता है। कोई भी स्ट्रिंग स्वयं की सबसीक्वेंस होती है और एक खाली स्ट्रिंग किसी भी स्ट्रिंग की सबसीक्वेंस होती है।
समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो स्ट्रिंग्स की एक सरणी को एकमात्र आर्ग्युमेंट के रूप में लेता है। हमारे फ़ंक्शन को उनमें से सबसे लंबी असामान्य सबसीक्वेंस की लंबाई ढूंढनी होगी।
सबसे लंबी असामान्य सबसीक्वेंस से हमारा मतलब है, सरणी में किसी एक स्ट्रिंग की सबसे लंबी सबसीक्वेंस और यह सबसीक्वेंस सरणी में अन्य स्ट्रिंग्स की कोई सबसीक्वेंस नहीं होनी चाहिए।
यदि कोई असामान्य सबसीक्वेंस मौजूद नहीं है, तो हमें -1 वापस करना चाहिए।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है:
const arr = ["aba", "cdc", "eae"];
तो आउटपुट होना चाहिए:
const output = 3;
आउटपुट व्याख्या:
"aba", "cdc" और "eae" सभी लंबाई 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