В следующем коде:
function sherlockAndAnagrams(s) {
var pairs = 0;
var subStrings = {};
//find all substrings of our string, count them in a hash
for(var i = 0; i < s.length; i++){
for(var j = i; j < s.length; j++){
let tempSubString = s.substring(i, j+1).split("").sort().join("");
if(subStrings[tempSubString]){
subStrings[tempSubString] +=1;
}else{
subStrings[tempSubString] = 1;
}
}
}
//****ATTENTION******
for(var keys in subStrings){
if(subStrings[keys] > 1){
let temp = (subStrings[keys])*(subStrings[keys]-1)/2;
pairs += temp;
}
}
return pairs;
}
Я не уверен, как работает математика этой формулы:
subString [keys]) * (subString [keys] -1) / 2
Предполагая, что s = "kkkk", будет 6 анаграмм "k" s
Может кто-нибудь объяснить это?
Кроме того, этот вид говорит мне, чтоЯ могу быть немного не хватает определенного типа математики.Если бы вы могли посоветовать мне хороший материал для изучения математики таким образом, я был бы признателен за это!