iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0
Software Development

用JS來刷刷HackerRank系列 第 24

(27)HackerRank-Interview-Dictionaries and Hashmaps-Sherlock and Anagrams(javaScript ans)

題目

舉例輸入

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);
}  

 

上一篇
(26)HackerRank-Interview-Dictionaries and Hashmaps-Two Strings(javaScript ans)
下一篇
(28)HackerRank-Interview-Dictionaries and Hashmaps-Count Triplets(javaScript ans)
系列文
用JS來刷刷HackerRank29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言