
[LeetCode] Optimal Partition of String

그리디 알고리즘 문제
s를 순회한다.partition에 해당 문자가 존재한다면, 새 파티션을 시작한다.class Solution {
public int partitionString(String s) {
Set<Character> partition = new HashSet<>();
int cnt = 0;
for(char c : s.toCharArray()) {
if(partition.contains(c)) {
cnt++;
partition.clear();
}
partition.add(c);
}
cnt++;
return cnt;
}
}
Set을 사용하지 않고 배열을 사용
class Solution {
public int partitionString(String s) {
boolean[] partition = new boolean[26];
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if (partition[s.charAt(i) - 'a']) {
cnt++;
partition = new boolean[26];
}
partition[s.charAt(i) - 'a'] = true;
}
cnt++;
return cnt;
}
}
- 배열을 이용한 풀이가 24ms 더 빠른 성능을 보인다.