方法一 暴力枚举:
对每个单词循环判断是否是其他单词的子字符串
var stringMatching = function(words) {
const ret = [];
for (let i = 0; i < words.length; i++) {
for (let j = 0; j < words.length; j++) {
if (i !== j && words[j].search(words[i]) !== -1) {
ret.push(words[i]);
break;
}
}
}
return ret;
};
消耗时间和内存情况:
方法二: indexOf()和lastIndexOf()
把words拼接为一整个字符串,循环words里的每个单词,如果能匹配两次并且位置不同就说明该单词为子字符串
var stringMatching = function(words) {
let res=[]
let str=words.join('+')
for(let word of words){
if(str.indexOf(word)!=-1 && str.indexOf(word)!=str.lastIndexOf(word) ){
res.push(word)
}
}
return res
};
消耗时间和内存情况: