活跃农民
- 积分
- 721
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-10-28
- 最后登录
- 1970-1-1
|
回覆一下follow up, 有問題請指正:
Javascript:
// Given a string array, group the isomorphic strings into groups.
function isomorphicGroup(arr) {
if (arr === null || arr.length === 0) return [];
let result = [];
// Use a helper method to build unique hash for different patterns
function encoding(str) {
let i = 0;
let hash = "";
let map = {};
for(let c of str) {
if (map[c] === undefined) {
map[c] = i++;
hash += map[c];
}
}
return hash;
}
let isoMap = {};
for (let str of arr) {
// Unique pattern
let hashStr = encoding(str);
// Group the same pattern strings into same array.
if (isoMap[hashStr] === undefined) {
isoMap[hashStr] = [str];
} else {
isoMap[hashStr].push(str);
}
}
// Build the result array
for (let key in isoMap) {
result.push(isoMap[key]);
}
return result;
}
let strArr = ['aba', 'zzz','dccb', 'ded', 'ccc', 'aaa', 'cbba'];
console.log(isomorphicGroup(strArr));
// [ [ 'zzz', 'ccc', 'aaa' ], [ 'aba', 'ded' ], [ 'dccb', 'cbba' ] ] |
|