privatebooleanisScramble(char[] chars1, int i, char[] chars2, int j, int length, Map<String, Boolean> cacheMap) { if (length == 1) { return chars1[i] == chars2[j]; }
private String generateCacheKey(int i, int j, int length) { return String.join("_", String.valueOf(i), String.valueOf(j), String.valueOf(length)); }
privatebooleanequals(char[] chars1, int i, char[] chars2, int j, int length) { int[] counts1 = newint[26]; for (intm= i; m < i + length; m++) { counts1[chars1[m] - 'a']++; }
int[] counts2 = newint[26]; for (intm= j; m < j + length; m++) { counts2[chars2[m] - 'a']++; }
for (intm=0; m < 26; m++) { if (counts1[m] != counts2[m]) { returnfalse; } }