package leetCode.week1;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
*
* https://leetcode-cn.com/problems/valid-anagram/
* valid-anagram
* https://leetcode.com/problems/valid-anagram/
*
* @author JP.Jiang
* @version Java
* @since 2019/04/23
*/
public class LeetCode_242_13 {
/**
* week2
*
*
* Map {letter:count}
* Map
*
*
* sn
* -- O(n)
* Map -- O(1)
* -- O(n)
*
* @param s source string
* @param t target string
* @return source equals target -> true ; else -> false
*/
public boolean isAnagram(String s, String t) {
return countMap(s).equals(countMap(t));
}
private Map countMap(String s) {
Map countMap = new HashMap();
for (char ch : s.toCharArray()) {
if (!countMap.containsKey(ch)) {
countMap.put(ch, 1);
} else {
countMap.replace(ch, countMap.get(ch) + 1);
}
}
return countMap;
}
/**
* week1
*
*
*
*
*
* sn
* O(N*logN)
*
* @param s source string
* @param t target string
* @return source equals target -> true ; else -> false
*/
public boolean isAnagramForWeek1(String s, String t) {
return sorted(s).equals(sorted(t));
}
private String sorted(String s) {
char[] ch = s.toCharArray();
Arrays.sort(ch);
return Arrays.toString(ch);
}
}