有效的字母异位词
Tips
题目类型: HashMap
题目
给定两个字符串 s 和 t, 编写一个函数来判断 t 是否是 s 的字母异位词. 若 s 和 t 中每个字符出现的次数都相同, 则称 s 和 t 互为字母异位词.
示例
输入: s ="anagram", t = "nagaram"
输出: true
题解
很简单没啥说的, 哈希表搞下即可.
- JavaScript
 - Rust
 
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function (s, t) {
  if (s.length !== t.length) return false
  const map = new Map()
  for (const item of s) {
    if (map.has(item)) {
      map.set(item, map.get(item) + 1)
    } else {
      map.set(item, 1)
    }
  }
  for (const item of t) {
    if (!map.has(item)) return false
    if (map.get(item) > 1) {
      map.set(item, map.get(item) - 1)
    } else {
      map.delete(item)
    }
  }
  return map.size === 0
}
use std::collections::HashMap;
pub fn is_anagram(s: String, t: String) -> bool {
    if s.len() != t.len() {
        return false;
    }
    let mut map: HashMap<u8, i32> = HashMap::new();
    for item in s.as_bytes().iter() {
        map.entry(*item).and_modify(|e| *e += 1).or_insert(1);
    }
    for item in t.as_bytes().iter() {
        if !map.contains_key(item) {
            return false;
        }
        if map.get(item).unwrap() == &1 {
            map.remove(item);
        } else {
            map.entry(*item).and_modify(|e| *e -= 1);
        }
    }
    return map.len() == 0;
}