1347. Minimum Number of Steps to Make Two Strings Anagram

  • ν•œμͺ½ λ¬Έμžμ—΄μ—μ„œ νŠΉμ • 개수의 λ¬Έμžλ“€μ„ κ΅μ²΄ν•˜μ—¬ μ–‘μͺ½ λ¬Έμžμ—΄μ΄ anagram이 λ˜λ„λ‘ν•˜λŠ” μ΅œμ†Œ 문자의 개수λ₯Ό κ΅¬ν•œλ‹€.
  • 두 λ¬Έμžμ—΄μ΄ anagram이 되렀면 μ–‘μͺ½ λ¬Έμžμ—΄μ˜ μ•ŒνŒŒλ²³ μΆœν˜„ λΉˆλ„κ°€ κ°™μ•„μ•Ό ν•œλ‹€.
  • 즉, λ¬Έμžμ—΄μ˜ μΆœν˜„ λΉˆλ„μ˜ 차이λ₯Ό κ΅¬ν•˜λ©΄ λ˜λŠ” λ¬Έμ œλ‹€.
  • λ¨Όμ € 첫번째 λ¬Έμžμ—΄μ˜ μΆœν˜„ λΉˆλ„λ₯Ό μ„Έμ–΄ λ°°μ—΄ counter 에 μ €μž₯ν•œλ‹€.
  • λ‹€μŒ λ‘λ²ˆμ§Έ λ¬Έμžμ—΄μ˜ μΆœν˜„ λΉˆλ„λ₯Ό μ„Έλ˜ μΆœν˜„ν•œ 만큼 λ°°μ—΄μ—μ„œ κ°μ†Œμ‹œν‚€λŠ” λ°©μ‹μœΌλ‘œ μ„Όλ‹€.
  • κ·Έ λ‹€μŒ 전체 배열을 λŒλ©΄μ„œ μΆœν˜„ λΉˆλ„ 차이 κ°’ counter[i] 이 0 이상인 것(차이가 λ°œμƒν•œ 것)을 μ„Έμ–΄μ„œ λͺ¨λ‘ λ”ν•˜λ©΄ λœλ‹€.
    • μΆœν˜„ λΉˆλ„ 차이 값이 음수 인것은 ꡐ체 λŒ€μƒμ΄ 될 문자의 μˆ˜μ΄λ―€λ‘œ λ¬΄μ‹œν•˜λ©΄ λœλ‹€.
class Solution { public int minSteps(String s, String t) { int result = 0; int[] counter = new int[26]; for (int i = 0; i < s.length(); ++i) { ++counter[s.charAt(i) - 'a']; } for (int i = 0; i < t.length(); ++i) { --counter[t.charAt(i) - 'a']; } for (int i = 0; i < counter.length; ++i) { if (counter[i] > 0) result += counter[i]; } return result; } }