Leetcode Java Word Subsets
업데이트:
문제
코드
class Solution {
public List<String> wordSubsets(String[] words1, String[] words2) {
int[] charArray = new int[26];
for (String word : words2) {
int[] temp = new int[26];
for (char c : word.toCharArray()) {
int num = c - 'a';
temp[num]++;
if (charArray[num] < temp[num]) {
charArray[num] = temp[num];
}
}
}
List<String> result = new ArrayList<>();
for (String word : words1) {
int[] temp = new int[26];
for (char c : word.toCharArray()) {
temp[c - 'a']++;
}
if (this.isSubset(charArray, temp)) {
result.add(word);
}
}
return result;
}
private boolean isSubset(int[] charArray, int[] temp) {
for (int i = 0; i < 26; i++) {
if (charArray[i] > temp[i]) {
return false;
}
}
return true;
}
}
결과
설명
-
words2의 각 단어 별 가장 많이 발생한 문자와 갯수가 포함된 words1의 문자열을 탐색하는 문제이다.
-
charArray는 words2의 모든 문자를 포함할 변수로, words2를 반복하여 문자별 가장 큰 문자의 수를 넎어준다.
-
result는 만족하는 문자열을 넣을 변수로, words1을 반복하여 각 문자 별 charArray의 문자와 갯수가 포함되는 문자열만 넣어준다.
-
모든 반복이 완료되면 결과가 저장된 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기