From cfd69e7649758729a0b4a7eeb5686381e281e8db Mon Sep 17 00:00:00 2001 From: jackfiled Date: Mon, 6 May 2024 11:12:44 +0800 Subject: [PATCH] 20240506 Finished --- src/problem/mod.rs | 3 +- src/problem/p205_isomorphic_strings.rs | 42 ++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/problem/p205_isomorphic_strings.rs diff --git a/src/problem/mod.rs b/src/problem/mod.rs index 002ed57..64d6797 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -122,4 +122,5 @@ mod p54_spiral_matrix; mod p48_rotate_image; mod p73_set_matrix_zeroes; mod p289_game_of_life; -mod p383_ransom_note; \ No newline at end of file +mod p383_ransom_note; +mod p205_isomorphic_strings; \ No newline at end of file diff --git a/src/problem/p205_isomorphic_strings.rs b/src/problem/p205_isomorphic_strings.rs new file mode 100644 index 0000000..e72e657 --- /dev/null +++ b/src/problem/p205_isomorphic_strings.rs @@ -0,0 +1,42 @@ +/** + * [205] Isomorphic Strings + */ +pub struct Solution {} + + +// submission codes start here +use std::collections::HashMap; + +impl Solution { + pub fn is_isomorphic(s: String, t: String) -> bool { + let mut inverse_map = HashMap::with_capacity(s.len()); + let mut reverse_map = HashMap::with_capacity(t.len()); + + for (c1, c2) in s.chars().zip(t.chars()) { + let entry = inverse_map.entry(c1).or_insert(c2); + + if *entry != c2 { + return false; + } + + let entry = reverse_map.entry(c2).or_insert(c1); + + if *entry != c1 { + return false; + } + } + + true + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_205() { + } +}