2
abba
abcd
舉例輸出
4
0
舉例輸入
2
ifailuhkqq
kkkk
舉例輸出
3
10
解析
這題略複雜,但只要搞懂要點就相當容易
題旨為某String 的1~str.length-1隨意排列組合
有幾種
那麼我們就是雙層迴圈去遍歷
然後按照A~Z排序,看是否為同意字源所組成
依題目要求,要出現兩次結果才能+1
所以[a,b,c,d]為0
function sherlockAndAnagrams(s) {
var wordBook = {};
var result = 0;
//開始檢測所有的字元
for (var i=0; i<s.length; i++) {
//目前檢測到的字元到最後
for (var j=i; j<s.length; j++) {
//先把目前字串切割成趁列排序好後再組成字串
var sortString = s.substring(i, j+1).split('');
sortString.sort();
sortString = sortString.join('');
//創建或計數這個組合
wordBook[sortString] = (wordBook[sortString] || 0) + 1;
// 依照題目要求,這個字母出現兩次以上才計數
if (wordBook[sortString] > 1) {
result += wordBook[sortString]-1;
}
}
}
return (result);
}