22.4.27 [HackerRank]Java String Tokens

서태욱·2022년 4월 27일
0

Algorithm

목록 보기
17/45
post-thumbnail

✅ 문제 분석

정규 표현식 [A-Za-z !,?._'@]+와 매칭되는 String s가 주어지면 string을 토큰으로 split한다. 이때 토큰은 하나 이상의 연속적인 영어 알파벳이라고 정의한다. 그리고 토큰 수를 프린트하고 이어서 각 토큰을 새 라인에 프린트해준다.

🌱 배경지식

String.split() 메서드

  1. split(String regex);
    -> 구분자를 바탕으로 문자열을 배열형식으로 정규식(regex)에 맞춰서 분할한다.

공백 ""을 사용해 문자열을 분리하는 경우

public class Split { 
	public static void main(String[] args) { 
    	String str = "Hello World"; 
        String[] ArraysStr = str.split(" "); 
        
        for(String s : ArraysStr) 
        	System.out.println(s); 
      } 
 }
 //결과
 // Hello
 // World

","을 사용해 문자열을 분리하는 경우

public class Split { 
	public static void main(String[] args) { 
    	String str = "ABCDEFG,HIJKLMN,OPQRSTU,VWXYZ";
        String[] ArraysStr = str.split(","); 
        
        for(String s : ArraysStr) 
        	System.out.println(s); 
      } 
 }
 //결과
 // ABCDEFG
 // HIJKLMN
 // OPQRSTU
 // VWXYZ
  1. split(String regex, int limit);
    -> 구분자를 바탕으로 배열 형식으로 limit만큼 문자열을 분할한다.
import java.io.*;
public class Test {

   public static void main(String args[]) {
      String Str = new String("Welcome-to-Tutorialspoint.com");
      System.out.println("Return Value :" );
      
      for (String retval: Str.split("-", 2)) {
         System.out.println(retval);
      }
      System.out.println("");
      System.out.println("Return Value :" );
      
      for (String retval: Str.split("-", 3)) {
         System.out.println(retval);
      }
      System.out.println("");
      System.out.println("Return Value :" );
      
      for (String retval: Str.split("-", 0)) {
         System.out.println(retval);
      }
      System.out.println("");
   }
}
//결과 값

Return Value :
Welcome
to-Tutorialspoint.com

Return Value :
Welcome
to
Tutorialspoint.com

Return Value:
Welcome
to
Tutorialspoint.com

String.trim() 메서드

데이터 앞뒤로 공백이 찍히는 경우가 발생할 수 있다 이때 trim()메서드를 사용하면 간단히
공백을 제거할 수 있다. 공백 문자인 유니코드값 \u0020을 읽어들여 문자열의 앞,뒤 공백을 제거해 준다.

public class Trim{
	public static void main(String[] args){
    	String str = "  Hello  World  ";
        System.out.println(str.trim());
    }
}

결과: 앞뒤 공백이 제거된다.

Hello World

✏️ 해설

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        // Write your code here.
        // s를 trim()해주고, 그 길이가 문제에서 주어진 범위 안에 있다면
       if (s.trim().length() >=1 || s.trim().length() >= 400000){ 
       //split()을 사용해 구분자를 바탕으로 문자열을 배열형식으로 정규식(regex)에 맞춰서 분할하고 token이라는 변수명으로 담아준다.
           String[] token = s.trim().split("[ !,?._'@]+");
           // 첫줄에는 token의 길이를 출력한다.
           System.out.println(token.length);
           //i 초기값 0부터 i가 토큰의 길이보다 작을때까지 증가시키며 반복
           for(int i=0; i<token.length; i++){
           //토큰의 배열을 출력해준다.
               System.out.println(token[i]);
           }
       } else{
           System.out.println("0");
       }
        scan.close();
    }

👉 참고

profile
re:START

0개의 댓글