
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
문자열 s가 주어졌을 때, 두 개의 같은 문자를 포함하는 가장 긴 부분 문자열을 반환해라. 만약 부분 문자열이 없다면 -1을 반환해라.
부분 문자열은 문자열 내에서 연속된 문자들의 순서이다.
#1
Input: s = "aa"
Output: 0
Explanation: 두 개의 'a'사이에 있는 문자열은 비어있다.
#2
Input: s = "abca"
Output: 부분 문자열은 "bc"이다.
#3
Input: s = "cbzxy"
Output: -1
Explanation: s에 같은 문자가 없다.
class Solution {
public int maxLengthBetweenEqualCharacters(String s) {
HashMap<Character, Integer> map = new HashMap<>();
int max = 0;
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(map.containsKey(c)){
int diff = i - map.get(c);
max = Math.max(max, diff);
}else{
map.put(c, i);
}
}
return max - 1;
}
}