fun longestCommonPrefix(input: String): String {
if (input.isBlank()) return ""
// Split by non‑word characters (same as Java's split("\\W+"))
val words = input
.lowercase()
.split(Regex("\\W+"))
.filter { it.isNotEmpty() }
if (words.isEmpty()) return ""
var prefix = words.first()
for (word in words) {
while (!word.startsWith(prefix)) {
prefix = prefix.dropLast(1)
if (prefix.isEmpty()) return ""
}
}
return prefix
}
fun main() {
val s1 = "The lowly inhabitants of the lowland were surprised to see the lower branches."
println("LCP: '${longestCommonPrefix(s1)}'")
val s2 = "unclear, uncertain, unexpected"
println("LCP: '${longestCommonPrefix(s2)}'")
}
/*
run:
LCP: ''
LCP: 'un'
*/