From 67d12771529a22fce87e15d7785c3d849a5d0c77 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Sun, 11 Aug 2024 11:20:41 +0800 Subject: [PATCH] fix: p97 subtract panic. --- src/problem/p97_interleaving_string.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/problem/p97_interleaving_string.rs b/src/problem/p97_interleaving_string.rs index 257c06a..e7c5ad1 100644 --- a/src/problem/p97_interleaving_string.rs +++ b/src/problem/p97_interleaving_string.rs @@ -10,28 +10,32 @@ impl Solution { pub fn is_interleave(s1: String, s2: String, s3: String) -> bool { let (s1, s2, s3): (Vec, Vec, Vec) = (s1.chars().collect(), s2.chars().collect(), s3.chars().collect()); let (n, m, t) = (s1.len(), s2.len(), s3.len()); - + if n + m != t { return false; } - + let mut dp = vec![false; m + 1]; dp[0] = true; - + for i in 0..=n { for j in 0..=m { + if i == 0 && j == 0 { + continue; + } + let p = i + j - 1; - + if i != 0 { dp[j] &= s1[i - 1] == s3[p]; } - + if j != 0 { dp[j] |= dp[j - 1] && s2[j - 1] == s3[p]; } } } - + dp[m] } } @@ -44,5 +48,6 @@ mod tests { #[test] fn test_97() { + assert!(Solution::is_interleave("aabcc".to_owned(), "dbbca".to_owned(), "aadbbcbcac".to_owned())); } }