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
© 允许规范转载