📍 문제 설명
https://leetcode.com/problems/longest-substring-without-repeating-characters/
💡 접근
해쉬맵을 이용하는데 문자와 해당 문자가 나타난 인덱스를 저장하여서 풀이
👩💻 코드
import java.io.*;
import java.util.*;
public class Solution {
public int lengthOfLongestSubstring(String s) {
int max = 0;
Map<Character, Integer> map = new HashMap<>();
for(int lt = 0, rt = 0; rt < s.length(); rt++) {
//이미 존재하는 문자가 있으면 lt를 해당 문자의 인덱스 이후로 하여서 길이 계산
if(map.containsKey(s.charAt(rt))) {
lt = Math.max(lt, map.get(s.charAt(rt)) + 1);
}
//현재 문자와 그 문자의 인덱스를 넣기
//이미 존재하는 문자는 위에서 처리되고 덮어쓰여진다.
map.put(s.charAt(rt), rt);
max = Math.max(max, rt-lt+1);
}
return max;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Solution s = new Solution();
String str = "abcabcbb";
s.lengthOfLongestSubstring(str);
}
}
'Algorithm > leetcode' 카테고리의 다른 글
Longest Palindromic Substring (0) | 2022.03.22 |
---|