문장 속 단어

Seung jun Cha·2022년 10월 13일
0

- 문장에서 가장 긴 단어 출력

  1. split() : 구분자를 기준으로 단어를 분리 후 String[]에 담는다
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String string = sc.nextLine();

        String[] split = string.trim().split("\\s+"); 
        // 공백을 기준으로 하는 정규표현식

        int len = Integer.MIN_VALUE; // 최솟값 설정
        String word = "";

        for (String s : split) {
            if (len < s.length()){
                len = s.length();
                word = s;
            }
        }
        System.out.println(word);
  1. indexOf() : 특정 문자나 문자열에서 해당하는 문자의 인덱스 값을 반환하고, 찾지 못했을 경우 '-1'을 반환
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();

        int m = Integer.MIN_VALUE ,pos;
        String answer = "";

        while ((pos = str.indexOf(' ')) != -1){
            String tmp = str.substring(0, pos);
            int len = tmp.length();
            if (len > m){
                m = len;
                answer = tmp;
            }
             str = str.substring(pos + 1);
        }
        if (str.length() > m) answer = str;
        System.out.println(answer);

    }

(1) 공백의 위치를 인덱스로 반환하고 그 인덱스 전까지 substring
(2) str = str.substring(pos + 1) : 공백의 다음 문자열로 초기화 한 후, 공백 인덱스부터 다음 공백까지 자르기
(3) if (len > m) 여기서 if (len >= m) 하면 가장 긴 문자열이 여러개일 때, 가장 뒤에 있는 문자열을 반환함
(4) if (str.length() > m) answer = str : 마지막 단어 뒤에는 공백이 없으므로 마지막 단어는 생략이 되는데, 이를 막기 위해 설정

  1. StringTokenizer
import java.io.*;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int max = 0;
        String result = "";

        while (st.hasMoreTokens()){
            String token = st.nextToken();
            int length = token.length();

            if (length > max){
                max = length;
                result = token;
            }
        }
        System.out.println(result);
    }
}

0개의 댓글