///|
pub fn lcs_length(a : String, b : String) -> Int {
let a_chars = a.to_array()
let b_chars = b.to_array()
let a_len = a_chars.length()
let b_len = b_chars.length()
if a_len == 0 || b_len == 0 {
return 0
}
let prev = Array::make(b_len + 1, 0)
let curr = Array::make(b_len + 1, 0)
for i in 1..<=a_len {
for j in 1..<=b_len {
if a_chars[i - 1] == b_chars[j - 1] {
curr[j] = prev[j - 1] + 1
} else {
curr[j] = @cmp.maximum(prev[j], curr[j - 1])
}
}
for j in 0..<=b_len {
prev[j] = curr[j]
curr[j] = 0
}
}
prev[b_len]
}