์ฝ๋
import java.util.HashMap;
import java.util.Map;
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character, Integer> charIndexMap = new HashMap<>();
int maxLength = 0;
int left = 0;
// ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๊ตฌํ
for (int right = 0; right < s.length(); right++) {
char currentChar = s.charAt(right);
// ํ์ฌ ๋ฌธ์๊ฐ ํด์๋งต์ ์กด์ฌํ๊ณ , ์๋์ฐ์ ์์ ์ธ๋ฑ์ค๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด
if (charIndexMap.containsKey(currentChar) && charIndexMap.get(currentChar) >= left) {
// ์์ ์ธ๋ฑ์ค ๊ฐฑ์
left = charIndexMap.get(currentChar) + 1;
}
// ํด์๋งต์ ํ์ฌ ๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅ
charIndexMap.put(currentChar, right);
// ํ์ฌ ์๋์ฐ์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํ๊ณ , ์ต๋ ๊ธธ์ด ๊ฐฑ์
maxLength = Math.max(maxLength, right - left + 1);
}
return maxLength;
}
}
Java
๋ณต์ฌ
๋ฌธ์ ํด๊ฒฐ ์์ด๋์ด
์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ฅผ ์ฌ์ฉํ์ฌ, ContainsKey๋ฅผ ํตํด ํด์๋งต์ ์ ์ฅํ ์ค๋ณต๋ฌธ์๊ฐ ๋์ฌ ๋๋ง๋ค ์์ ์ธ๋ฑ์ค๋ฅผ ๊ฐฑ์ ํด๊ฐ๋ฉฐ, ์ต๋ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.