题目是“给定一个字符串,找出最长的不重复字符的非重复子串”。例如,为什么返回我的代码不适用于字符串“dvdf”,我有点难过。这是我的代码:
function lengthOfLongestSubstring(check) {
var letters = check.split("");
var max = 0;
var result = [];
for (var i = 0; i < letters.length; i++) {
var start = i
if (result.indexOf(letters[i]) === -1) {
result.push(letters[i])
} else {
i = i - 1
result = []
}
if (max === 0 || max < result.length) {
max = result.length
}
}
return max
}
最佳答案
此实现为 "dvdf"
提供了正确的结果。
它将字符添加到 current_string
而没有重复。当您发现重复项时,将 current_string
剪切到重复项的位置。 max
是 current_string
在任何时候的最大长度。这个逻辑对我来说似乎是正确的,所以我认为它是正确的。
function lengthOfLongestSubstring(string) {
var max = 0, current_string = "", i, char, pos;
for (i = 0; i < string.length; i += 1) {
char = string.charAt(i);
pos = current_string.indexOf(char);
if (pos !== -1) {
// cut "dv" to "v" when you see another "d"
current_string = current_string.substr(pos + 1);
}
current_string += char;
max = Math.max(max, current_string.length);
}
return max;
}
lengthOfLongestSubstring("dvdf"); // 3
每一轮current_string
的值为"", "d", "dv", "vd", "vdf"
。
https://stackoverflow.com/questions/43002447/
相关文章:
list - 我怎样才能找到一个列表包含在任何元素中的另一个列表?
visual-studio-code - VS Code 安装 Visual Studio Code
java - PaseclCase 字符串转大写,下划线分隔
python - 如何将三个列表转换为字典,其中键取自前两个列表的笛卡尔积,值取自第三个列表
nuxt.js - Nuxt : Difference nuxtServerInit vs Mddl
javascript - 在javascript中以毫秒为单位获取当前的unix时间
vue.js - 无法使用 vue-html2pdf 将 HTML 代码转换为 PDF