LeetCode 1153. String Transforms Into Another String

Problem Statement


use std::collections::{HashMap, HashSet};

impl Solution {
pub fn can_convert(str1: String, str2: String) -> bool {
if str1.len() != str2.len() {
return false;
}
if str1 == str2 {
return true;
}

let mut map = HashMap::new();
let mut have = HashSet::new();

for i in 0..str1.len() {
let (key, val) = (str1.chars().nth(i).unwrap(), str2.chars().nth(i).unwrap());
have.insert(val);
if !map.contains_key(&key) {
map.insert(key, val);
} else if *map.get(&key).unwrap() != val {
return false;
}
}

return map.len() >= have.len() && (have.len() < 26);
}
}