Solve isomorphic-strings.
This commit is contained in:
parent
2c193f140d
commit
61dcce1a76
|
@ -0,0 +1,15 @@
|
|||
pub fn is_isomorphic(a: String, b: String) -> bool {
|
||||
let mut map_a = std::collections::HashMap::new();
|
||||
let mut map_b = std::collections::HashMap::new();
|
||||
|
||||
for (a, b) in a.chars().zip(b.chars()) {
|
||||
let from_map_a = *map_a.entry(a).or_insert(b);
|
||||
let from_map_b = *map_b.entry(b).or_insert(a);
|
||||
|
||||
if from_map_b != a || from_map_a != b {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
true
|
||||
}
|
|
@ -2,6 +2,7 @@ pub mod add_binary;
|
|||
pub mod excel_sheet_column_number;
|
||||
pub mod excel_sheet_column_title;
|
||||
pub mod implement_strstr;
|
||||
pub mod isomorphic_strings;
|
||||
pub mod length_of_last_word;
|
||||
pub mod longest_common_prefix;
|
||||
pub mod missing_number;
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
use leetcode::isomorphic_strings::is_isomorphic;
|
||||
|
||||
use test_case::test_case;
|
||||
|
||||
#[test_case("egg", "add", true; "valid")]
|
||||
#[test_case("foo", "bar", false; "invalid")]
|
||||
#[test_case("badc", "baba", false; "map both ways")]
|
||||
#[test_case("paper", "title", true; "different maps")]
|
||||
fn test_isomorphic_strings(a: &str, b: &str, expected: bool) {
|
||||
assert_eq!(is_isomorphic(a.to_string(), b.to_string()), expected);
|
||||
}
|
Loading…
Reference in New Issue