1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-11-09 15:59:06 +01:00
LeetCode/kt/minimum-window-substring.kt
Matej Focko aaaebf1d52
style(kt): reformat the files
Signed-off-by: Matej Focko <me@mfocko.xyz>
2024-05-17 18:23:38 +02:00

38 lines
855 B
Kotlin

class Solution {
fun minWindow(
s: String,
t: String,
): String {
val freqs = IntArray(128) { 0 }
t.forEach {
freqs[it.toInt()]++
}
var (bestLower, bestUpper) = 0 to -1
var count = t.length
var (l, r) = 0 to 0
while (r < s.length) {
if (freqs[s[r].toInt()]-- > 0) {
count--
}
while (count == 0) {
if (bestLower >= bestUpper || bestUpper - bestLower + 1 > r - l + 1) {
bestLower = l
bestUpper = r
}
freqs[s[l].toInt()]++
if (freqs[s[l++].toInt()] > 0) {
count++
}
}
r++
}
return s.substring(bestLower, bestUpper + 1)
}
}