[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.