public static boolean checkPermutation(String str1, String str2) {
		if (null == str1 || null == str2 || str1.isEmpty() || str2.isEmpty()) {
			return false;
		}
		if (str1.length() != str2.length()) {
			return false;
		}

		Map<Character, Integer> map = new HashMap<Character, Integer>();

		int len = str1.length() - 1;
		while (len >= 0) {
			if (map.containsKey(str1.charAt(len))) {
				Integer val = map.get(str1.charAt(len)) + 1;
				map.put(str1.charAt(len), val);
			} else {
				map.put(str1.charAt(len), 0);
			}
			len--;
		}

		len = str2.length() - 1;
		while (len >= 0) {
			if (!map.containsKey(str2.charAt(len))) {
				return false;
			}
			len--;
		}
		return true;
	}