LeetCode[Java] longest-substring-without-repeating-characters

/*
현재 풀이는 정답은 나왔지만 아직 최상의 효율이 나오는 코드가 아니라 개선이 필요할 거 같습니다. 하지만 이제부터는 파이썬,자바, 가능하다면 c,javascript까지 한 가지 알고리즘 풀이를 여러가지 언어로 풀어내어 언어 숙련도 및 기초 학습을 병행할 예정입니다. 그리고 기초 문법에 대한 질문을 제외하면 AI는 활용하지 않을 예정입니다. 현업에서는 업무량으로 인해서 자연스럽게 AI를 쓸 수 밖에 없지만 공부를 할 때 단순 기초 체력을 위해서는 되도록 안쓰고 공부를 하려고 합니다.
*/

// 출처

/*
* https://leetcode.com/problems/longest-substring-without-repeating-characters/
*/

// 정답 풀이
import java.util.ArrayDeque;
import java.util.List;
import java.util.Set;
import java.util.HashSet;

class Solution {
public int lengthOfLongestSubstring(String s) {

if(s.isEmpty()){
return 0;
}
// S list로 쪼개기
ArrayDeque<String> SDeque = new ArrayDeque<>(List.of(s.split("")));
System.out.println(SDeque.size());
// 현재값 저장
ArrayDeque<String> now = new ArrayDeque<>();

//검색
Set<String> SearchSet = new HashSet<>();

// 결과
int result = 0;

for(String i: SDeque){
// System.out.println(i);

if(SearchSet.contains(i)){
int idx = new ArrayList<>(now).indexOf(i);
int end = now.size();
int half = end/2;

for (int k = 0; k < idx+1; k++){
String NowString = now.peekFirst();
now.pollFirst();
SearchSet.remove(NowString);

// System.out.println("제대로 나오나"+now.size());
}
now.addLast(i);
SearchSet.add(i);
}



// 포함되어 있지 않을 때
else {
now.addLast(i);
SearchSet.add(i);
result = Math.max(result,now.size());
System.out.println(result);
}

}

return result;
}
}