문제 풀이
제출한 코드
import java.util.HashMap;
class Solution {
public static boolean buddyStrings(String s, String goal) {
int sLen = s.length();
if (sLen != goal.length()) {
return false;
}
HashMap original = new HashMap<Character, Integer>();
HashMap target = new HashMap<Character, Integer>();
char[] originalChar = s.toCharArray();
char[] targetChar = goal.toCharArray();
int cnt = 0;
for (int i = 0; i < sLen; i++) {
if (originalChar[i] != targetChar[i]) {
if (++cnt >= 3) {
return false;
}
}
if (original.containsKey(originalChar[i])) {
int cntOriginal = (int) original.get(originalChar[i]);
original.put(originalChar[i], ++cntOriginal);
} else {
original.put(originalChar[i], 1);
}
if (target.containsKey(targetChar[i])) {
int cntTarget = (int) target.get(targetChar[i]);
target.put(targetChar[i], ++cntTarget);
} else {
target.put(targetChar[i], 1);
}
}
boolean notEnoughChar = original.values().stream().allMatch(it -> (int) it <= 1);
if (notEnoughChar) {
if (s.equals(goal)) {
return false;
}
}
for (Object key : original.keySet()) {
if (!target.containsKey(key)) {
return false;
}
int originalCnt = (int) original.get(key);
int targetCnt = (int) target.get(key);
if (originalCnt != targetCnt) {
return false;
}
}
return true;
}
}
잘한점
개선할점
- 문제 해결 방식을 찾는데 시간이 너무 오래 걸림