https://leetcode.com/problems/longest-substring-without-repeating-characters/
string이 주어졌을 때 문자가 안 겹치는 가장 긴 부분 문자열을 찾아내면 된다!
저는 일단 temp라는 배열을 만들어서 그 안에 하나씩 추가하게 하였습니다. 그리고 temp 안에 문자가 있을 때, 그 문자의 인덱스를 찾아 그 다음부터 끝까지 잘라서 temp에 다시 넣어주고 그 문자를 푸쉬 했습니다.
만약 포함이 안 되어 있다면 그냥 추가 했습니다.
그리고 최대길이를 갱신해주면 됩니다.
var lengthOfLongestSubstring = function(s) {
let temp = [];
let maxLength = 0;
for (let i = 0; i < s.length; i++) {
if (temp.includes(s[i])){
const index = temp.findIndex((value) => value === s[i]);
temp = temp.slice(index+1);
temp.push(s[i]);
}
else {
temp.push(s[i]);
}
maxLength = Math.max(maxLength, temp.length);
}
return maxLength;
};
substring을 이용하면 문자열을 자를 수 있습니다. indexof를 이용해서 해당 문자의 index를 찾을 수 있습니다. 만약 문자가 없다면 -1이 반환 돼서 0부터 끝까지 그대로이고, 문자가 있다면 그 다음부터 자르게 만든 것이다. 그리고 해당 문자를 더해주고 제일 긴 길이를 갱신해주면 된다.
var lengthOfLongestSubstring = function(s) {
let longest = 0;
let current = "";
for (let i = 0; i < s.length; i++) {
current = current.substring(current.indexOf(s[i]) + 1)
current += s[i];
if (current.length > longest) {
longest = current.length;
}
}
return longest;
};