给定字符串列表 strs ,返回 它们中 最长的特殊序列 。如果最长特殊序列不存在,返回 -1 。
最长特殊序列 定义如下:该序列为某字符串 独有的最长子序列(即不能是其他字符串的子序列)。
s 的 子序列可以通过删去字符串 s 中的某些字符实现。
例如,”abc” 是 “aebdc” 的子序列,因为您可以删除”aebdc”中的下划线字符来得到 “abc” 。”aebdc”的子序列还包括”aebdc”、 “aeb” 和 “” (空字符串)。
示例 1:
输入: strs = [“aba”,”cdc”,”eae”]
输出: 3
示例 2:
输入: strs = [“aaa”,”aaa”,”aa”]
输出: -1
/*** @param {string[]} strs* @return {number}*/var findLUSlength = function (strs) {let map = new Map(), max = 0, str;for (let i = 0; i < strs.length; i += 1) {map.set(strs[i], (map.get(strs[i]) || 0) + 1);if (strs[i].length > max) {max = strs[i].lengthstr = strs[i]}}// 最长字符串是唯一的if (map.get(str) === 1) {return max}max = -1// 双指针比较是否是子序列let compare = function (s, t) {let i = 0;let j = 0;while (i < s.length && j < t.length) {if (s[i] === t[j]) { j++ }i++}return j === t.length}// 取出哈希表中的唯一的字符串与str(最长的字符串)进行比较 判断是否为它的子串map.forEach((value, key) => {if (value === 1 && !compare(str, key)) {max = Math.max(key.length, max)}})return max};

