Solution
package leetcode.sully.week2;
import java.util.ArrayList;
import java.util.List;
public class PartitionLabels {
    // ababcbaca defegde hijhklij -> [9, 7, 8]
    public List<Integer> partitionLabels(String s) {
        List<Integer> answer = new ArrayList<>();
        int lastIndex = 0;
        int start = 0;
        // i == 0: lastIndexOf로 첫번째 문자와 같을 때를 찾고 구역 나눈다 -> index 값 저장
        // i == 1: 그 index 값을 i == 0일 때와 비교하여 index < i라면 구역을 위의 로직으로 다시 나누기
        for (int i = 0; i < s.length(); i++) {
            start ++;
            // 계속 for문 돌다가 lastIndex 위치가 더 큰 걸로 저장
            if (s.lastIndexOf(s.charAt(i)) > lastIndex) {
                lastIndex = s.lastIndexOf(s.charAt(i));
            }
            // 오 이제 여기서 파티션 분리 해주면 되겠지?
            if (lastIndex == i) { // lastIndex에 i가 도달을 하면 이제 잘라줘야겠지 -> 근데 어떻게 자를까
                answer.add(start); // i번째를 넣어주고
                start = 0; // 다시 초기화
            }
        }
        return answer;
    }
}
 
        
      
      
      
      
  
     
    
      
    
  
Leave a comment