20240811 Finished
This commit is contained in:
parent
a602f53852
commit
a29a200972
|
@ -201,3 +201,4 @@ mod p300_longest_increasing_subsequence;
|
||||||
mod p120_triangle;
|
mod p120_triangle;
|
||||||
mod p64_minimum_path_sum;
|
mod p64_minimum_path_sum;
|
||||||
mod p63_unique_paths_ii;
|
mod p63_unique_paths_ii;
|
||||||
|
mod p97_interleaving_string;
|
48
src/problem/p97_interleaving_string.rs
Normal file
48
src/problem/p97_interleaving_string.rs
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
/**
|
||||||
|
* [97] Interleaving String
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
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 (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 {
|
||||||
|
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]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_97() {
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user