【发布时间】:2020-08-14 15:00:06
【问题描述】:
问题:
给定一个字符串数组 arr。字符串 s 是 arr 的子序列的串联,具有唯一的字符。
返回s的最大可能长度
例子:
Input: arr = ["un","iq","ue"]
Output: 4
Explanation: All possible concatenations are "","un","iq","ue","uniq" and "ique".
Maximum length is 4.
Input: arr = ["cha","r","act","ers"]
Output: 6
Explanation: Possible solutions are "chaers" and "acters".
我的解决方案:
var maxLength = function(arr) {
if(!arr || arr.length === 0) return 0;
let word = "";
arr.sort((a,b) => b.length - a.length);
let set = new Set();
const removeFromSet = (str) => {
for(let i=0; i<str.length; i++) {
set.delete(str[i]);
}
}
const isInSet = (str) => {
for(let i=0; i<str.length; i++) {
if(set.has(str[i])) {
removeFromSet(str.substring(0, i));
return true;
}
else
set.add(str[i]);
}
return false
}
for(let i=0; i<arr.length; i++) {
if(!isInSet(arr[i])) {
word += arr[i];
}
}
return word.length;
};
输入失败:["ab","cd","cde","cdef","efg","fgh","abxyz"]
它应该返回 11,但我的解决方案返回 9。
我知道我的解决方案正在计算:“abxyzcdef”,它应该是:“abxyzfghcde”。有谁知道我做错了什么?
谢谢
【问题讨论】:
-
我知道这是一个 leetcode 问题。你知道我的代码有什么问题吗?
-
是的,该链接适用于除您之外没有相关问题背景的人。如果没有人回答,我会在稍后有机会时查看代码,但这有点像代码转储。 你认为你的代码有什么问题/你做了哪些努力来隔离问题?请在此处描述您的方法/理由。
标签: javascript arrays string set