package com.zmz.algorithm.hashtable;

import java.util.HashMap;

/**
 * @author 张明泽
 * Create by 2022/5/30 14:40
 * 有效的字母异位词
 * LeetCode-242
 */
public class ValidWords {
    /**
     * 思路一开始想错了 当找到这个值的时候 利用哈希将里面的元素 remove掉 可是这样 重复的也没了 不可取!
     */
    public static void main(String[] args) {
        String str1 = "acaa";
        String str2 = "caab";
        Boolean result = isAnagram(str1, str2);
        System.out.println(result);
    }
    public static Boolean isAnagram(String str1, String str2) {
        int[] words = new int[26];
        if (str1.length() != str2.length()) return false;
        for (int i = 0; i < str1.length(); i++) {
           words[str1.charAt(i) - 'a']++;
        }
        for (int i = 0; i < str2.length(); i++) {
            words[str2.charAt(i) - 'a']--;
            if (words[str2.charAt(i) - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }
    public static Boolean isAnagramHash(String str1, String str2) {
        HashMap<Character,Integer> hashMap = new HashMap<>();
        if (str1.length() != str2.length()) return false;
        for (int i = 0; i < str1.length(); i++) {
            char c = str1.charAt(i);
            hashMap.put(c,hashMap.getOrDefault(c,0) + 1);
        }
        for (int i = 0; i < str2.length(); i++) {
            char c = str2.charAt(i);
            hashMap.put(c,hashMap.getOrDefault(c,0) - 1);
            if (hashMap.get(c) < 0) {
                return false;
            }
        }
        return true;
    }
}
最后修改:2022 年 06 月 02 日 09 : 59 AM
赏杯咖啡喝 谢谢您~