1. 문제 : 문자열에 포함된 문자들이 전부 유일한지 검사하라

          <Check a string has unique character>
    
  2. 1차 솔루션

    1. code

    2. /**
           * Autor   : Joosang Kim
           * Version : 1.0.0 
           * Method  :Check String elements 
           * Params  : String 
           * Return  : Boolean
           */
          public boolean checkStringElements(String str){
              boolean ret = false;
              HashMap<Character, Integer> charMap = new HashMap<Character, Integer>();
      
              for (int i =0; i < str.length();i++){
                  char key = str.charAt(i);
                  if(charMap.containsKey(key)){
                      ret = false;
                      break;
                  }else{
                      int val = charMap.get(key) == null ? 0 : charMap.get(key);
                      val += 1;
                      charMap.put(key, val);
                      ret = true;
                  }
              }   
              return ret;
          }
      
    3. feedback

      1. 문자열 구성이 ASCII 인가 UTF-8인가
  3. ASCII 와 UTF-8

    1. ASCII

      1. 문자를 8bit(1Byte)로 표현

      2. 0 ~ 127 번까지 맵핑되어 있으며, 영어사용만 권장

    2. UTF-8

      1. 0 ~ 127 사이의 문자는 1byte로 저장. 128이상인 것들은 2byte , 3byte로 늘려나감
  4. 2차 솔루션

    1. ASCII 코드를 사용한다고 가정

    2. Boolean 개념 도입

    3. code

    4. /**
           * Autor   : Joosang Kim
           * Version : 1.0.0 
           * Method  :Check String elements 
           * Params  : String 
           * Return  : Boolean
           */
          public boolean checkStringElements(String str){
              boolean ret = false;
              if(str.length() > 256){ // str contains multiple character
                  return ret;
              }
              boolean[] char_set = new boolean[256];
      
              for(int i = 0; i< str.length(); i++){
                  int val = str.charAt(i);
                  if(char_set[val]){
                      return ret;
                  }
                  char_set[val]=true;
              }
              ret = true;
              return ret;
          }
      
    5. feedback
      1. ASCII 코드로 가정했으므로, 중복없는 문자는 최대 256 개 존재 가능( 그 이상 존재시 중복항 존재 문자열)
      2. 256사이즈의 boolean 배열에 문자열 원소값에 ASCII값을 대응.
      3. ASCII index에 true / false 구분

results matching ""

    No results matching ""