Longest Substring Without Repeating Characters
xGiven a string, find the length of the longest substring without repeating characters.
중복되는 알파벳이 없는 가장 최장의 substring을 구하라는 문제이다.
내 풀이부터 우선 보자.
x
class Solution {
public int lengthOfLongestSubstring(String s) {
int answer = 0;
String tmp = "";
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (tmp.contains("" + c)) {
tmp = tmp.substring(1);
i--;
} else {
tmp += c;
if (answer < tmp.length())
answer = tmp.length();
}
}
return answer;
}
}
문자열을 앞에서부터 하나하나 추가한다.
겹치는 문자가 나오면 안나올때까지 앞부분을 소거해나간다.
소거할만큼 한 뒤에는 다시 하나하나 추가해나간다.
추가할때마다 문자열 길이를 체크해서 가장 긴 길이를 리턴한다.
문자열 소거하는 타이밍, 추가하는 타이밍을 헤매서 조금 걸렸는데, 재밌는 문제였다.
Hash Set이라던지, ArrayList를 사용하는 사람들도 많았다.
나도 Deque를 사용해서 풀었으면 더 재밌었을것같다.
'공부 > algorithm' 카테고리의 다른 글
[codility] Brackets (0) | 2019.12.11 |
---|---|
[LeetCode] #4 Median of Two Sorted Arrays (0) | 2019.12.08 |
[LeetCode] #1 Two Sum (0) | 2019.12.05 |
[codewars] Which are in? (0) | 2019.03.29 |
[codewars] Who likes it? (0) | 2019.03.24 |
댓글