Leetcode Java Redistribute Characters to Make All Strings Equal
업데이트:
문제
코드
class Solution {
public boolean makeEqual(String[] words) {
int length = words.length;
if (length == 1) {
return true;
}
int wordsLength = 0;
for (String word : words) {
wordsLength += word.length();
}
if (wordsLength % length != 0) {
return false;
}
int[] counts = new int[26];
for (String word : words) {
for (char c : word.toCharArray()) {
counts[c - 'a']++;
}
}
for (int count : counts) {
if (count % length != 0) {
return false;
}
}
return true;
}
}
결과
설명
-
words의 모든 문자열의 특정 단어를 다른 문장으로 이동하여 모든 문자열이 동일하게 구성할 수 있는지 검증하는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 words의 길이를 저장한 변수이다.
- length가 1로, 문자열이 1개만 존재하면 true를 주어진 문제의 결과로 반환한다.
- wordsLength는 words의 모든 문자열의 길이를 저장한 변수로, words를 반복하여 모든 문자열의 길이를 저장한다.
- wordsLength를 length로 나눌 수 없으면, 동일한 문자열 구성이 불가능하므로 false를 주어진 문제의 결과로 반환한다.
- counts는 문자들의 갯수를 저장할 변수로, 영문자 갯수인 26 크기의 정수 배열로 초기화한 후 words를 반복하여 모든 문자의 갯수를 계산해준다.
- length는 words의 길이를 저장한 변수이다.
-
counts를 반복하여 각 문자의 갯수가 length 배수가 아니라면 주어진 문제의 결과로 false를 주어진 문제의 결과로 반환한다.
- 반복이 완료되면 동일한 문자열로 동일하게 구성할 수 있으므로, true를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기