每日一题——LeetCode1408.数组中的字符串匹配

每日一题——LeetCode1408.数组中的字符串匹配_第1张图片

方法一 暴力枚举:

对每个单词循环判断是否是其他单词的子字符串

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;
};

消耗时间和内存情况:

每日一题——LeetCode1408.数组中的字符串匹配_第2张图片

 

方法二: 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
};

 消耗时间和内存情况:

每日一题——LeetCode1408.数组中的字符串匹配_第3张图片

你可能感兴趣的:(每日一题,javascript,leetcode,算法)