#2052
Medium Algorithms Minimum cost to separate sentence into rows
String Dynamic Programming
51.2% acceptance
Mar 31, 2026
45
14
No description available.
Solution
Rust
Time O(n²)
Space O(n)
impl Solution {
pub fn minimum_cost(sentence: String, k: i32) -> i32 {
let words: Vec<&str> = sentence.split(' ').collect();
let n = words.len();
let k = k as usize;
let mut dp = vec![i32::MAX; n + 1];
dp[0] = 0;
for i in 1..=n {
let mut len = 0usize;
for j in (1..=i).rev() {
len += words[j - 1].len();
if j < i {
len += 1; // space
}
if len > k {
break;
}
if dp[j - 1] == i32::MAX {
continue;
}
if i == n {
// last row: cost is 0
dp[i] = dp[i].min(dp[j - 1]);
} else {
let cost = (k - len) * (k - len);
dp[i] = dp[i].min(dp[j - 1] + cost as i32);
}
}
}
dp[n]
}
}