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);
}
}
- 먼저, 문자열 myString 안에서 pat이 마지막으로 등장하는 위치(index)를 찾는다.
- 그 위치에서 pat이 끝나는 마지막 글자의 인덱스까지 포함하려면
→ pat의 시작 인덱스에 pat의 길이만큼 더해줘야 한다. - 이렇게 구한 인덱스를 기준으로,
처음부터 해당 위치까지 자르면 우리가 원하는 결과가 나온다. - 결국, myString에서 마지막으로 등장한 pat까지 포함된 문자열을 리턴하게 된다.
✅ String.lastIndexOf()
pat의 마지막으로 등장한 위치를 알려 주는 메서드이다.
만약 여러 개 존재하는 경우 전부 찾고 싶다면, 반복문을 사용해야 하고, 마지막 인덱스를 알고 싶으면 아래 메서드를 쓴다.
int last = myString.lastIndexOf(pat);
✅ String.indexOf()
int index = myString.indexOf(pat);
myString
에pat
이 처음 등장하는 위치를 알려준다.- 만약
pat
이 없다면-1
을 리턴한다.