[プログラマー級1]フルコースを走っていない選手が答える



に質問


多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.

せいげんじょうけん

  • マラソンに出場する選手は1人以上10万人以下.
  • 完了長さは参加者長1より小さい.
  • 参加者の名前は20文字を超えない.
  • の参加者には同名の人がいる可能性があります.
  • 🖨️ I/O例



    💡 に答える

    import java.util.HashMap;
    
    class Solution {
        public String solution(String[] participant, String[] completion) {
            String answer = "";
            HashMap<String, Integer> hs = new HashMap<>();
            
            for(String s : participant) {
                if(!hs.containsKey(s))
                    hs.put(s, 1);
                else
                    hs.put(s, hs.get(s) + 1);
            }
            
            for(String s : completion) {
                if(hs.containsKey(s)) 
                    hs.put(s, hs.get(s) - 1);
            }
            
            for(String key : hs.keySet()) {
                if(hs.get(key) != 0) {
                    answer = key;
                    break;
                }
            }
                
            return answer;
        }
    }

    ✏️ comment

  • 海西地図に参加者の名前と人数を入れます(同名の人がいれば1名ではないので).
  • を達成した人の価値は-1です.
  • value値が0でない場合、この名前は「未完了」です.