Open tsungtingdu opened 3 years ago
var findRepeatedDnaSequences = function(s) {
const map = new Map()
const result = []
for(let i = 0; i < s.length; i ++) {
let split = s.substring(i, 10 + i)
if(split.length === 10) {
let value = map.get(split)
map.has(split) ? map.set(split, value += 1) : map.set(split, 1)
}
}
for(let [key, value] of map) {
if(value > 1) result.push(key)
}
return result
};
只想到暴力解 Runtime: 20% 好慢...
var findRepeatedDnaSequences = function(s) {
let result = []
if (s.length < 11) return result
let map = {}
for (let i = 0; i + 10 <= s.length; i++) {
let str = s.substring(i, i + 10)
map[str] ? map[str]++ : map[str] = 1
}
return Object.keys(map).filter(key => map[key] >= 2)
};
var findRepeatedDnaSequences = function(s) {
if (s.length < 11) return []
let set = new Set()
let res = new Set()
for (let i = 0; i <= s.length - 10; i++) {
let sub = s.slice(i, i + 10)
if (set.has(sub)) res.add(sub)
else set.add(sub)
}
return [...res]
};
/**
* @param {string} s
* @return {string[]}
*/
var findRepeatedDnaSequences = function(s) {
const seen = {}
const res = []
let i = 0
while(i + 10 <= s.length) {
const dna = s.slice(i, i + 10)
seen[dna] = seen[dna] + 1 || 1
if(seen[dna] === 2) {
res.push(dna)
}
i++
}
return res
};
用 Set 的速度稍微快一點點,推測在 JavaScript 當中 Set 的操作速度比 array 快 (?)