function longestCommonPrefix(input: string): string {
if (!input || input.trim() === "") {
return "";
}
// Split by non‑word characters (same as Java's split("\\W+"))
const words: string[] = input
.toLowerCase()
.split(/\W+/)
.filter(w => w.length > 0);
if (words.length === 0) {
return "";
}
let prefix: string = 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'"
*/