kt: add «14. Longest Common Prefix»

URL:	https://leetcode.com/problems/longest-common-prefix/
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2025-03-05 20:21:29 +01:00
parent 989f2b071e
commit fb06fb1fc6
Signed by: mfocko
SSH key fingerprint: SHA256:icm0fIOSJUpy5+1x23sfr+hLtF9UhY8VpMC7H4WFJP8

View file

@ -0,0 +1,18 @@
class Solution {
private fun findCommonPrefix(
x: String,
y: String,
): String =
minOf(x.length, y.length).let { maxLength ->
(0..maxLength - 1).takeWhile { i ->
x[i] == y[i]
}.lastOrNull() ?: -1
}.let { maxIndex ->
x.substring(0, maxIndex + 1)
}
fun longestCommonPrefix(strs: Array<String>): String =
strs.drop(1).fold(strs[0]) { commonPrefix, str ->
findCommonPrefix(commonPrefix, str)
}
}