문제 링크
난이도 : Lv. 0
문제 내용
문자열 myString
과 pat
가 주어집니다. myString
의 부분 문자열중 pat
로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
제한사항
- 5 ≤
myString
≤ 20 - 1 ≤
pat
≤ 5pat
은 반드시myString
의 부분 문자열로 주어집니다.
myString
과pat
에 등장하는 알파벳은 대문자와 소문자를 구분합니다.
입출력 예
myString | pat | result |
---|---|---|
”AbCdEFG" | "dE" | "AbCdE" |
"AAAAaaaa" | "a" | "AAAAaaaa” |
문제 분석
뒤에서부터 찾으면 될듯
작성한 코드
#include <string>
#include <vector>
using namespace std;
string solution(string myString, string pat) {
int endIdx = -1;
for(int i = myString.size() - 1; i>-1; i--){
if(endIdx != -1) break;
if(myString[i] == pat.back()){
for(int j = 0; j < pat.size(); j++){
if(myString[i-j] != pat[pat.size() - j - 1]) break;
else if(j == pat.size() - 1) {
endIdx = i;
}
}
}
}
string answer = myString.substr(0, endIdx + 1);
return answer;
}
우수 코드 분석
#include <string>
#include <vector>
using namespace std;
string solution(string myString, string pat) {
return myString.substr(0, myString.rfind(pat)+pat.length());
}
find(탐색 문자열, 인덱스 = 0) : 탐색 문자열을 앞에서부터 검색함
rfind(탐색 문자열, 인덱스 =npos) : 탐색 문자열을 뒤에서부터 검색함
못찾으면 -1