Necesito encontrar la longitud de la subcadena más larga en una cadena, lo hago así:
var lengthOfLongestSubstring = function(s) { let arr = []; let obj = {}; for(let i = 0; i<s.length; i++){ if(arr.indexOf(s[i])!==-1){ copy=arr.slice(); obj[i]=copy; arr=[]; arr.push(s[i]) } else{ arr.push(s[i]); } } console.log(obj) return Object.values(obj).reduce((acc, nextItem)=>{ if(acc&acc.length>=nextItem&&nextItem.length){ return acc.length; } else{ return nextItem.length } }, []) }; console.log (lengthOfLongestSubstring ('abcabcbb'));Para el caso de prueba "abcabcbb" devuelve 1 en lugar de 3 y no entiendo por qué; por cierto, ¿qué complejidad (en términos de gran O) lograría mi código?
la variante que tiene debería funcionar, solo corrija algunos errores tipográficos en su código:
return Object.values(obj).reduce((acc, nextItem) => acc >= nextItem.length ? acc.length : nextItem.length , 0)