JSFiddle - React, Tailwind, and code Playground
JavaScript
const arr = ["hello", "helloworld", "helloworld1"];
const allContains = (inp, start, end) => {
for (let i = 0; i < inp.length; i++) {
for (let j = start; j <= end; j++) {
if (inp[0].charAt(j) !== inp[i].charAt(j)) {
return false;
}
}
}
return true;
};
const findSubstring = (inp) => {
let min = Number.MAX_VALUE;
for (let i = 0; i < inp.length; i++) {
min = Math.min(inp[i].length, min);
}
let low = 0,
high = min - 1;
let prefix = '';
while (low <= high) {
let mid = low + Math.round((high - low) / 2);
if (allContains(inp, low, mid)) {
prefix += inp[0].substring(low, mid + 1);
low = mid + 1;
} else
high = mid - 1;
}
return prefix;
};
console.log(findSubstring(arr));