[LeetCode]3. Longest Substring without repeating characters (javascript)
728x90
반응형
if(checked[s[i]]) 부분에서 위치가 0일때도 안나왔던 것처럼 인식해서 애먹었다; ㅠ
undefined로 명시적으로 처리해줬다.
Input: s = "abcabcbb"
뒤의 a가 등장하면 a의 위치는 3으로 바뀌고 문자열 시작위치는 이전 a의 뒤인 b(1)이 되어
가장 긴 문자열은 bca가 된다.
** 찾아보니 Map을 사용해서 풀면 코드를 더 간단히 할 수 있을 것 같다
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
const checked={};
let result=0;
let start=0;
for(let i=0;i<s.length;i+=1){
//마지막 위치가 문자열이 시작된 후에 등장한 거라면 고려한다. start가 문자열의 시작 위치이므로
// 그전에 등장하면 무시한다.
if(checked[s[i]]!==undefined && start<=checked[s[i]]){
start=checked[s[i]]+1;
}else{
길이 계속 갱신 (1씩 늘린다)
result=result>(i-start+1)?result:(i-start+1);
}
checked[s[i]]=i; //각 문자의 마지막 위치 갱신
}
return result;
};
728x90
반응형
'Leetcode' 카테고리의 다른 글
[LeetCode] 347. Top K Frequent elements (javascript) (0) | 2020.12.19 |
---|---|
[LeetCode] 771. Jewels and Stones (javascript) (0) | 2020.12.18 |
[LeetCode] 739. Daily Temperatures (javascript) (0) | 2020.12.18 |
[LeetCode] 316. Remove Duplicate letters (javascript) (0) | 2020.12.18 |
[LeetCode] 121. Best time to buy and sell stock (javascript) (0) | 2020.12.18 |
TAGS.