indexOf(), substring() 알고리즘

2024. 5. 20. 14:09JAVA

반응형

간단한 문장 속 단어 알고리즘을 풀어보겠습니다.

문장 속 가장 긴 단어를 출력하는 프로그램이고, 가장 길이가 긴 단어가 여러개일 경우 문장 속에서 가장 앞쪽에 위치한 단어를 답으로 합니다. 각 단어는 공백으로 구분됩니다.

 

입력 예시

it is time to go

 

출력 예시

time

 

 

package com.example.testproject;
import java.util.Scanner;

class Main{
    public String solution(String str){
      String answer = "";
      int m = Integer.MIN_VALUE, pos; //가장 작은 값으로 초기화
      /* 1. split을 쓰는 방법
      String[] s = str.split(" ");
      for(String x : s){
          int len = x.length();
          if(len > m){
              m = len;
              answer = x;
          }
      }
      */
        //2. indexOf()와 substring()을 사용하는 방법
        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); //pos 인덱스 뒤부터 끝까지 잘라서 가져옴
        }
        if(str.length() > m) answer = str; //마지막 단어는 while문을 안타기 때문에 따로 처리

      return answer;
    }
    public static void main(String[] args){
        Main t = new Main(); //solution 함수를 static으로 선언한다면 굳이 인스턴스 만들 필요 없음
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine(); //한 줄을 읽어들임
        System.out.print(t.solution(str));

    }
}

 

 

  • indexOf() 함수 : 특정 문자열의 인덱스를 찾음
  • substring(int startIndex) 함수 : startIndex부터 끝까지의 문자열을 리턴한다.
  • substring(int startIndex, int endIndex) 함수 : startIndex(포함)부터 endIndex(불포함)까지의 문자열을 리턴한다.

 

반응형

'JAVA' 카테고리의 다른 글

대소문자 변환 알고리즘  (0) 2024.05.20
알고리즘 - 문자열  (0) 2024.05.20
자바의 Stream Method  (0) 2023.09.12
getOrDefault 함수  (0) 2023.09.11