1408. 数组中的字符串匹配 - 力扣(LeetCode)
easy
题解
- 按照题目要求,想到排序,只有长的才能包含短的
- 因此就做条件判断
/**
* @param {string[]} words
* @return {string[]}
*/
var stringMatching = function(words) {
//words.sort((a,b)=>a.length-b.length)
let result = new Set();
for(let i=0;i<words.length;i++){
for(let j=words.length-1;j>=0;j--){
if(words[j].length>words[i].length&&words[j].includes(words[i])){
result.add(words[i])
}
}
}
return [...result]
};
执行结果:通过
执行用时:80 ms, 在所有 JavaScript 提交中击败了6.90%的用户
内存消耗:41.1 MB, 在所有 JavaScript 提交中击败了77.01%的用户
通过测试用例:67 / 67
/**
* @param {string[]} words
* @return {string[]}
*/
var stringMatching = function(words) {
words.sort((a,b)=>a.length-b.length)
let result = new Set();
for(let i=0;i<words.length;i++){
for(let j=words.length-1;j>=0;j--){
if(words[j].length>=words[i].length&&words[j].includes(words[i])&&words[i]!=words[j]){
result.add(words[i])
}
}
}
return [...result]
};
执行结果:通过
执行用时:64 ms, 在所有 JavaScript 提交中击败了58.62%的用户
内存消耗:41.3 MB, 在所有 JavaScript 提交中击败了40.23%的用户
通过测试用例:67 / 67
- 条件中可以不使用排序,因为已经存在长度判断
/**
* @param {string[]} words
* @return {string[]}
*/
var stringMatching = function(words) {
//words.sort((a,b)=>a.length-b.length)
let result = new Set();
for(let i=0;i<words.length;i++){
for(let j=words.length-1;j>=0;j--){
if(words[j].length>=words[i].length&&words[j].includes(words[i])&&words[i]!=words[j]){
result.add(words[i])
}
}
}
return [...result]
};
执行结果:通过
执行用时:56 ms, 在所有 JavaScript 提交中击败了91.95%的用户
内存消耗:41.1 MB, 在所有 JavaScript 提交中击败了75.86%的用户
通过测试用例:67 / 67