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