オープンチャットルーム


質問する




もんだいぶんせき


外に出てから入ってきたりニックネームを直したりするといつも変わる可能性がある結果、最初から最後まで変わったニックネームを見せることになります

に答える

변하지 않는 유저ID.ユーザID 자유롭게 바뀔 수 있는 닉네임해시맵を使用して検索すれば、常に見つけることができます.

オーダー

  • 海西地図ユーザーID、ニックネーム登録
  • 現在のニックネーム、すべてのレコード出力
  • 海西地図にユーザーID、ニックネームを登録する

    변하지 않는 유저IDを日時マッピングとして指定したキー자유롭게 바뀔 수 있는 닉네임を日時マッピングの値とした場合、常にID->ニックネーム変換が可能となる.
    		HashMap<String,String> hash = new HashMap<>(); //유저ID, 닉네임으로 해시맵 구성
            
    		for(String s : record){ //한 사건당 닉네임 구분을 위해
                String[] temp = s.split(" ");
                switch(temp[0]){
                    case "Enter":
                    case "Change": //입장, 변경
                        hash.put(temp[1],temp[2]); //id, 닉네임 저장
                        break;
                }
            }
    文字列のsplit(" ")は、単語単位で配列に格納される.temp[0]:アクションtemp[1] : idtemp[2]:ニックネーム
    アクセスとニックネームの変更時にのみハッシュマッピングのニックネームを入力、変更します.

    現在のニックネームですべてのレコードを出力


    従来とは異なり,String+演算ではなく,StringBuilderappend()法を用いた.
    		//출력 배열 해시로 id->닉네임
            for(String s: record){
                String[] temp = s.split(" ");
                StringBuilder sb = new StringBuilder();
                String id = temp[1]; //ID
                sb.append(hash.get(id) + "님이 "); //닉네임
                
                switch(temp[0]){
                    case "Enter": //입장
                        sb.append("들어왔습니다.");
                        answer.add(sb.toString());
                        break;
                    case "Leave": //퇴장
                        sb.append("나갔습니다.");
                        answer.add(sb.toString());
                        break;
                }
            }
    ニックネームの変更は出力されません.そのため、入力と終了時にのみ結果が出力されます.

    コード#コード#


    import java.util.*;
    class Solution {
    public String[] solution(String[] record) {
    HashMap hash = new HashMap<>();//ユーザーID、ニックネームを使用したハッシュマッピングの構成
    ArrayList answer = new ArrayList<>();//結果の保存
        for(String s : record){ //한 사건당 닉네임 구분을 위해
            String[] temp = s.split(" ");
            switch(temp[0]){
                case "Enter":
                case "Change": //입장, 변경
                    hash.put(temp[1],temp[2]); //id, 닉네임 저장
                    break;
            }
        }
       
        //출력 배열 해시로 id->닉네임
        for(String s: record){
            String[] temp = s.split(" ");
            StringBuilder sb = new StringBuilder();
            String id = temp[1]; //ID
            sb.append(hash.get(id) + "님이 "); //닉네임
           
            switch(temp[0]){
                case "Enter": //입장
                    sb.append("들어왔습니다.");
                    answer.add(sb.toString());
                    break;
                case "Leave": //퇴장
                    sb.append("나갔습니다.");
                    answer.add(sb.toString());
                    break;
            }
        }
       
        return answer.toArray(new String[answer.size()]); //결과출력
    }
    }

    GitHub


    https://github.com/ds02168/Study_Algorithm/commit/e40e17bf98b7cfa27155072c87182f43e2f4ae71