Skip to main content

41. [Java] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/181872

  • 문자열 myString과 pat가 주어진다.
  • myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return

  • 5 ≤ myString ≤ 20
  • 1 ≤ pat ≤ 5
    • pat은 반드시 myString의 부분 문자열로 주어진다.
  • myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분한다.

정답코드

문자열 myString 안에 있는 pat 중에서 가장 마지막에 나오는 pat까지 포함한 부분 문자열을 리턴하는 코드

class Solution {
    public String solution(String myString, String pat) {
        // 먼저 마지막에 나오는 pat을 찾고
        // 그 앞 처음부터 pat까지 substring() 하면 되겠네 
        int idx = myString.lastIndexOf(pat);
        int len = pat.length();
        return myString.substring(0, idx+len);
    }
}
  1. 먼저, 문자열 myString 안에서 pat이 마지막으로 등장하는 위치(index)를 찾는다.
  2. 그 위치에서 pat이 끝나는 마지막 글자의 인덱스까지 포함하려면
    → pat의 시작 인덱스에 pat의 길이만큼 더해줘야 한다.
  3. 이렇게 구한 인덱스를 기준으로,
    처음부터 해당 위치까지 자르면 우리가 원하는 결과가 나온다.
  4. 결국, myString에서 마지막으로 등장한 pat까지 포함된 문자열을 리턴하게 된다.
String.lastIndexOf()

pat의 마지막으로 등장한 위치를 알려 주는 메서드이다.
만약 여러 개 존재하는 경우 전부 찾고 싶다면, 반복문을 사용해야 ​하고, 마지막 인덱스를 알고 싶으면 아래 메서드를 쓴다.

int last = myString.lastIndexOf(pat);
String.indexOf()
int index = myString.indexOf(pat);
  • myStringpat처음 등장하는 위치를 알려준다.
  • 만약 pat이 없다면 -1을 리턴한다.