function longestCommonPrefix(input) {
if (!input || input.trim() === "") {
return "";
}
// Split by non‑word characters (same as Java's split("\\W+"))
const words = input
.toLowerCase()
.split(/\W+/)
.filter(w => w.length > 0);
if (words.length === 0) {
return "";
}
let prefix = words[0];
for (const word of words) {
while (!word.startsWith(prefix)) {
prefix = prefix.slice(0, -1);
if (prefix === "") {
return "";
}
}
}
return prefix;
}
const s1 = "The lowly inhabitants of the lowland were surprised to see the lower branches.";
console.log("LCP:", `'${longestCommonPrefix(s1)}'`);
const s2 = "unclear, uncertain, unexpected";
console.log("LCP:", `'${longestCommonPrefix(s2)}'`);
/*
run:
LCP: ''
LCP: 'un'
*/