diff --git a/src/problem/mod.rs b/src/problem/mod.rs index c7926cc..642a89e 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -123,4 +123,5 @@ mod p48_rotate_image; mod p73_set_matrix_zeroes; mod p289_game_of_life; mod p383_ransom_note; -mod p290_word_pattern; \ No newline at end of file +mod p290_word_pattern; +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() { + } +}