Longest Happy Prefix LeetCode solution in JavaScript
1var longestPrefix = function (s) {2const len = s.length;3const z = new Array(len).fill(0);4let l = 0,5r = 0;67for (let i = 1; i < len; i++) {8if (i <= r) z[i] = Math.min(r - i + 1, z[i - l]);9while (i + z[i] < len && s[z[i]] == s[i + z[i]]) {10z[i]++;11}12if (i + z[i] - 1 > r) {13r = i + z[i] - 1;14l = i;15}16}1718let idx = -1;19for (let i = 1; i < len; i++) {20if (i + z[i] == len) {21idx = i;22break;23}24}25if (idx == -1) return "";26return s.slice(idx);27};