- νΉμ ν λ κ°μ§ μ’
λ₯μ μμ
μ μννμ λ λ λ¬Έμμ΄μ΄ κ°μμ§ μ μλμ§ μμ보λ λ¬Έμ .
- μμ
1: μμμ μμΉμ μλ λ λ¬Έμμ μμΉλ₯Ό λ°κΎΌλ€
- μμ
2: λ¬Έμμ΄μ ν¬ν¨λ μλ‘ λ€λ₯Έ λ μνλ²³μ κ΅μ²΄νλ€ (e.g. abaa β babb)
- μμ
μ νΉμ§μ κ³ λ €νλ€.
- μμ
1μ΄ μλ―Ένλ λ°λ λ¬Έμμ μμΉλ κ΄κ³κ° μλ€λ κ²μ΄λ€. μ¦, κ° μνλ²³μ μΆν λΉλλ§ μκ°νλ©΄ λλ€.
- μμ
2κ° μλ―Ένλ λ°λ νΉμ ν λ μνλ²³μ μΆνλΉλλ₯Ό κ΅ννλ©΄ μμͺ½μ μνλ²³ μΆν λΉλκ° κ°μμ§λ€λ κ²μ΄λ€.
- λ€μκ³Ό κ°μ΄ νμ΄νλ€.
- λ¨Όμ λ λ¬Έμμ΄μ κΈΈμ΄λ κ°μμΌ νλ€.
- λ λ¬Έμμ΄ κ°κ°μ λν΄μ κ° μνλ²³μ μΆν λΉλλ₯Ό μΌλ€.
- 첫λ²μ§Έ λ¬Έμμ΄μ κ° μνλ²³ λ³λ‘ μΆν λΉλλ₯Ό λΉκ΅νλ€.
- λ§μ½μ μΆν λΉλκ° λ€λ₯΄λ€
counter1[i] β counter2[i]
λ©΄, - 첫λ²μ§Έ λ¬Έμμ΄μ μΆν λΉλ
counter1[i]
κ° 0
μ΄λΌλ©΄ κ΅νμ΄ λΆκ°λ₯νκΈ° λλ¬Έμ λ λ¬Έμμ΄μ λ€λ₯Έ κ²μΌλ‘ λ³Έλ€. - κ΅νμ΄ κ°λ₯νλ€λ©΄ νμ¬ μνλ²³ λ€μͺ½
i + 1
μ μλ μνλ²³ μ€μ κ°μ μΆν λΉλλ₯Ό κ°μ§ μνλ²³κ³Ό κ΅ννλ€. - νμ¬ μνλ²³ μμͺ½μΌλ‘λ μ΄λ―Έ μμͺ½ λ¬Έμμ΄μμμ μΆν λΉλλ₯Ό λ§μΆ κ²μ΄κΈ° λλ¬Έμ κ΅ννλ©΄ μλλ€.
- κ΅νμ΄ λΆκ°νλ©΄ λ λ¬Έμμ΄μ λ€λ₯Έ κ²μΌλ‘ λ³Έλ€.
class Solution {
void countCharacters(String word, int[] counter) {
for (int i = 0; i < word.length(); ++i) {
++counter[word.charAt(i) - 'a'];
}
}
public boolean closeStrings(String word1, String word2) {
if (word1.length() != word2.length())
return false;
int[] counter1 = new int[26];
int[] counter2 = new int[26];
countCharacters(word1, counter1);
countCharacters(word2, counter2);
for (int i = 0; i < 26; ++i) {
if (counter1[i] == counter2[i])
continue;
else if (counter1[i] == 0)
return false;
boolean found = false;
for (int j = i + 1; j < 26; ++j) {
if (counter1[j] > 0 && counter1[j] == counter2[i]) {
int temp = counter1[i];
counter1[i] = counter1[j];
counter1[j] = temp;
found = true;
break;
}
}
if (!found) return false;
}
return true;
}
}