Post

[Programmers] #181872 - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 [Java][C++][Python]

[Programmers] #181872 - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 [Java][C++][Python]

문제 링크


1. 아이디어

문자열 myString에서 pat으로 끝나는 가장 긴 부분 문자열을 반환하는 문제로 myString의 뒤에서부터 pat을 찾아 처음 발견하는 순간 myString의 0번 인덱스부터 해당 위치까지로 자르면 가장 긴 부분 문자열이 된다.


2. 복잡도

접근시간공간
풀이$O(N)$$O(N)$

($N$ = myString의 길이)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
class Solution {
    public String solution(String myString, String pat) {
        return myString.substring(0, myString.lastIndexOf(pat) + pat.length());
    }
}

lastIndexOf 메서드를 활용해 발견한 가장 뒷 부분 인덱스를 구했다. pat까지 포함해서 잘라야 하므로 pat의 길이만큼을 추가해서 잘라야 한다.

1
2
3
4
5
6
#include <bits/stdc++.h>
using namespace std;

string solution(string myString, string pat) {
    return myString.substr(0, myString.rfind(pat) + pat.size());
}

rfind 함수를 활용해 발견한 가장 뒷 부분 인덱스를 구했다. pat까지 포함해서 잘라야 하므로 pat의 길이만큼을 추가해서 잘라야 한다.

1
2
def solution(myString, pat):
    return myString[: myString.rfind(pat) + len(pat)]

rfind 함수를 활용해 발견한 가장 뒷 부분 인덱스를 구했다. pat까지 포함해서 잘라야 하므로 pat의 길이만큼을 추가해서 잘라야 한다.


This post is licensed under CC BY 4.0 by the author.