fix: p97 subtract panic.
This commit is contained in:
parent
a29a200972
commit
67d1277152
|
@ -10,28 +10,32 @@ impl Solution {
|
||||||
pub fn is_interleave(s1: String, s2: String, s3: String) -> bool {
|
pub fn is_interleave(s1: String, s2: String, s3: String) -> bool {
|
||||||
let (s1, s2, s3): (Vec<char>, Vec<char>, Vec<char>) = (s1.chars().collect(), s2.chars().collect(), s3.chars().collect());
|
let (s1, s2, s3): (Vec<char>, Vec<char>, Vec<char>) = (s1.chars().collect(), s2.chars().collect(), s3.chars().collect());
|
||||||
let (n, m, t) = (s1.len(), s2.len(), s3.len());
|
let (n, m, t) = (s1.len(), s2.len(), s3.len());
|
||||||
|
|
||||||
if n + m != t {
|
if n + m != t {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut dp = vec![false; m + 1];
|
let mut dp = vec![false; m + 1];
|
||||||
dp[0] = true;
|
dp[0] = true;
|
||||||
|
|
||||||
for i in 0..=n {
|
for i in 0..=n {
|
||||||
for j in 0..=m {
|
for j in 0..=m {
|
||||||
|
if i == 0 && j == 0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
let p = i + j - 1;
|
let p = i + j - 1;
|
||||||
|
|
||||||
if i != 0 {
|
if i != 0 {
|
||||||
dp[j] &= s1[i - 1] == s3[p];
|
dp[j] &= s1[i - 1] == s3[p];
|
||||||
}
|
}
|
||||||
|
|
||||||
if j != 0 {
|
if j != 0 {
|
||||||
dp[j] |= dp[j - 1] && s2[j - 1] == s3[p];
|
dp[j] |= dp[j - 1] && s2[j - 1] == s3[p];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dp[m]
|
dp[m]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,5 +48,6 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_97() {
|
fn test_97() {
|
||||||
|
assert!(Solution::is_interleave("aabcc".to_owned(), "dbbca".to_owned(), "aadbbcbcac".to_owned()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user