今天是道简单的题,我终于做出来了!可惜是用暴力算法,想着官方可能有好方法,打开一看也是暴力。每日摆烂(1/1)
今日打卡题目: 1408. 数组中的字符串匹配
题目描述
给你一个字符串数组 words ,数组中的每个字符串都可以看作是一个单词。请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词。
如果你可以删除 words[j] 最左侧和/或最右侧的若干字符得到 word[i] ,那么字符串 words[i] 就是 words[j] 的一个子字符串。
思路:
- 判断字串的方法可以用Array.includes()去判断;
- 考虑到子串和字符串的顺序是无序的,因此子串判断要从 index = 0 开始遍历;
- 提交一次后有报错,原因是子串重复了,因此改用 Set 存储,最后转为数组输出。
/**
* @param {string[]} words
* @return {string[]}
*/
var stringMatching = function(words) {
let res = new Set()
for(let i = 0; i<words.length; i++) {
for(let j = 0; j< words.length; j++) {
if(words[i].length > words[j].length && i!==j) {
if(words[i].includes(words[j])) res.add(words[j])
}
}
}
return [...res]
};