[LeetCode][JavaScript]Anagrams

Anagrams 

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

https://leetcode.com/problems/anagrams/

 

 


 
 
 
主要是不理解题目的意思啊,也没有例子。
anagrams就是由颠倒字母顺序而构成的字。
要求找出给定数组中所有的anagrams,注意到可能有多组。
比如:
["tea","and","ate","eat","den"] --> ["tea","ate","eat"]
["tea","and","ate","eat","dan"] --> ["tea","ate","eat","and","dan"]
 
哈希表+字符串排序。
每个进来的string,都按照字母大小排个序,作为特征塞进哈希表。
如果第一次碰到这个特征string,塞两个进结果数组,之后碰到只要塞当前的string进结果数组。
javascript String对象貌似没有排序的方法吧...强行拆成数组排完序再join起来。
 
 1 /**
 2  * @param {string[]} strs
 3  * @return {string[]}
 4  */
 5 var anagrams = function(strs) {
 6     var result = [], dict = {}, tmp;
 7     for(var i = 0; i < strs.length; i++){
 8         tmp = sortStr(strs[i]);
 9         if(dict[tmp] === undefined){
10             dict[tmp] = strs[i];
11         }else{
12             if(result.indexOf(dict[tmp]) === -1){
13                 result.push(dict[tmp]);
14             }
15             result.push(strs[i]);
16         }
17     }
18     return result;
19 
20     function sortStr(str){
21         var tmp = str.split('');
22         tmp.sort(sorting);
23         return tmp.join('');
24     }
25 
26     function sorting(a, b){
27         if(a > b){
28             return 1;
29         }else if(a < b){
30             return -1;
31         }else{
32             return 0;
33         }
34     }
35 };

 

 
 
 
posted @ 2015-08-02 16:48  `Liok  阅读(391)  评论(0编辑  收藏  举报