
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
2개의 문자열 word1과 word2는 'a'부터 'z'까지 각 문자의 빈도수 차이가 3이하일 때 거의 동일한다고 한다.
각 길이가 n인 2개의 문자열 word1과 word2가 주어졌을 때, word1과 word2가 거의 동일하다면 true, 그렇지 않다면 false를 반환해라.
문자 x의 빈도는 문자열에서 나타나는 횟수이다.
#1
Input: word1 = "aaaa", word2 = "bccb"
Output: false
Explanation: "aaaa"에 'a'가 4개 있지만 "bccb"에 'a'는 0개이다.
차이는 4이고, 3보다 크다.
#2
Input: word1 = "abcdeef", word2 = "abaaacc"
Output: true
Explanation: word1과 word2에는 있는 각 문자의 빈도 차이는 최대 3이다.
- a는 word1에서 1번, word2에서 4번 나타난다. 차이는 3이다.
- b는 word1에서 1번, word2에서 1번 나타난다. 차이는 0이다.
- c는 word1에서 1번, word2에서 2번 나타난다. 차이는 1이다.
- d는 word1에서 1번, word2에서 0번 나타난다. 차이는 1이다.
- e는 word1에서 2번, word2에서 0번 나타난다. 차이는 2이다.
- f는 word1에서 1번, word2에서 0번 나타난다. 차이는 1이다.
#3
Input: word1 = "cccddabba", word2 = "babababab"
Output: true
class Solution {
public boolean checkAlmostEquivalent(String word1, String word2) {
int n = word1.length();
int[] counts = new int[26];
for(int i = 0; i < n; i++){
char c1 = word1.charAt(i);
char c2 = word2.charAt(i);
counts[c1 - 'a']++;
counts[c2 - 'a']--;
}
for(int count : counts){
if(count > 3 || count < -3){
return false;
}
}
return true;
}
}