import Foundation
func longestCommonPrefix(_ input: String) -> String {
let trimmed = input.trimmingCharacters(in: .whitespacesAndNewlines)
if trimmed.isEmpty { return "" }
// Split by non‑word characters (similar to Java's split("\\W+"))
let words = trimmed
.lowercased()
.components(separatedBy: CharacterSet.alphanumerics.inverted)
.filter { !$0.isEmpty }
guard let first = words.first else { return "" }
var prefix = first
for word in words {
while !word.hasPrefix(prefix) {
prefix.removeLast()
if prefix.isEmpty { return "" }
}
}
return prefix
}
let s1 = "The lowly inhabitants of the lowland were surprised to see the lower branches."
print("LCP: '\(longestCommonPrefix(s1))'")
let s2 = "unclear, uncertain, unexpected"
print("LCP: '\(longestCommonPrefix(s2))'")
/*
run:
LCP: ''
LCP: 'un'
*/