[JAVA]コードテスト:新しいアイデンティティを推奨


コーディングテスト:新しいアイデンティティを推奨


質問する





I/O例



返信コード

import java.util.*;

class Solution {
    public String solution(String new_id) {
        String answer = "";
        
        answer = new_id.toLowerCase(); //1단계 
        answer = answer.replaceAll("[^-_a-z0-9.]",""); //2단계
        answer = answer.replaceAll("[.]{2,}","."); //3단계
        answer = answer.replaceAll("^[.]|[.]$",""); //4단계
    
        if (answer.equals("")){ //5단계
            answer = "a";
        }
        
        if (answer.length()>15){ //6단계
            answer = answer.substring(0,14);
         if (answer.substring(14).equals(".")){
                answer = answer.replace("[.]","");
            } }
        
        if (answer.length()<3){ //7단계
                do {
                answer += answer.substring(answer.length());
                } while (answer.length()<3);
            }
        
        return answer;
        }
        
    }

実行結果



今日学んだこと(2021-11-25)


特に第二段階はどうすればいいのか、悩んでいました.条件文と重複文を使用すると、コードが長すぎると思います.したがって,他の方法を探す際に発見されたのは「正規式」であり,正規式を用いるには10秒以上の実行時間がかかり,プログラマから結果値を得ることができない.正規式のほかに、条件文や複文を乱用するほか、別の方法を探さなければならない.
  • 正規表現の定理
  • パスした回答(2021-11-29)

    class Solution {
        public String solution(String new_id) {
            
            //1단계
            new_id = new_id.toLowerCase(); 
            
            //2단계
            String[] specialCharArr = {"~","!","@","#","$","%","^","&","*","(",")","=","+","[","{","]","}",":","?",",","<",">","/"};
            
            for(int i=0; i<specialCharArr.length; i++){
                if(new_id.contains(specialCharArr[i])){
                    new_id = new_id.replace(specialCharArr[i],"");
            }
                }
            
            //3단계
            if(new_id.contains("..")){
                do {
                new_id = new_id.replace("..",".");
            } while (new_id.contains(".."));
            }
            
            //4단계
            if (new_id.indexOf(".")==0){
                new_id = new_id.replaceFirst(".","");
            }
        
            if (new_id.lastIndexOf(".")==new_id.length()-1 && new_id.length()>=2){
                new_id=new_id.substring(0,new_id.length()-1);
            }
            
            //5단계
            if(new_id.length()<1){
                new_id = "aaa";
            }
            
            //6단계
            if(new_id.length()>=16){
               new_id = new_id.substring(0,15);
            }
            if(new_id.lastIndexOf(".")==new_id.length()-1&&new_id.length()>=2){
                new_id = new_id.substring(0,new_id.length()-1);
            }
    
            //7단계
            if(new_id.length()<=2 && new_id.length()>0){
                do{
                    new_id += new_id.charAt(new_id.length()-1);
                }while(new_id.length()<3);
            }
            
            String answer = new_id;
            return answer;
        }
    }