Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 레디스 확인
- 문자열순서바꾸기
- js 문자열을 문자배열로
- 재귀스왑
- 배엘에서 스왑
- 시퀄 문법
- 프론트엔드 스쿨
- 우분투 시간 변경
- sql like연산자
- 중복단어제거
- 문자열 중복
- indexOf()
- 중복문자제거
- 객체의키값만 찾기
- 스프링 데이타 JPA
- 단어 제거
- sql 문자열 패턴 검색
- 5.3.8 Modifying Queries
- 코딩 어?
- @Moditying @Query
- lastIndexOf()
- ...점점점문법
- ubuntu타임존
- 객체를 배열로
- 배열을 객체로
- 깃 토큰 만료
- 제로베이스
- 중복된 단어
- 중복 문자열
- 객체의 밸류값만 찾기
Archives
- Today
- Total
코딩기록
string) 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 / match + 정규표현식, lastIndexOf(), slice 본문
프론트/JS)코딩테스트
string) 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 / match + 정규표현식, lastIndexOf(), slice
뽀짝코딩 2024. 9. 23. 23:21728x90
문제 설명
문자열 str과 part가 주어집니다. str의 부분 문자열중 part로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
제한사항
- 5 ≤ str ≤ 20
- 1 ≤ part ≤ 5
- part은 반드시 str의 부분 문자열로 주어집니다.
- str과 part에 등장하는 알파벳은 대문자와 소문자를 구분합니다.
입출력 예
str part result
"AbCdEFG" | "dE" | "AbCdE" |
"AAAAaaaa" | "a" | "AAAAaaaa" |
입출력 예 설명
입출력 예 #1
- "AbCdEFG"에서 "dE"는 한 번 등장하며 처음부터 해당 위치까지 잘라내면 "AbCdE"가 됩니다. 따라서 이 문자열이 "dE"로 끝나는 가장 긴 문자열이며, "AbCdE"를 return 합니다.
입출력 예 #2
- "AAAAaaaa"에서 "a"는 총 네 번 등장하며 이 중 가장 마지막에 있는 위치까지 잘라내면 "AAAAaaaa"가 됩니다. 따라서 이 문자열이 "a"로 끝나는 가장 긴 문자열이며, "AAAAaaaa"를 return 합니다.
const solution = (str, part) => {
// do something
};
console.log(solution('AbCdEFG', 'dE')); // 'AbCdE'
console.log(solution('AAAAaaaa', 'a')); // 'AAAAaaaa'
풀이
1번 풀이 - for + lastIndexOf()
빈문자열 만들어놓고
part의 마지막 문자열 앞 인덱스(3, 4) + part.length(2, 1) = 5, 5
for문 i 두번 다 5보다 작으면 answer에 문자가 하나씩 더해진다.
// 1번 풀이 for문 + lastIndexOf
const solution1 = (str, part) => {
let answer = '';
const lastIndex = str.lastIndexOf(part) + part.length;
console.log(lastIndex);
for (let i = 0; i < lastIndex; i++) {
answer += str[i];
}
return answer;
};
console.log(solution1('AbCdEFG', 'dE')); // 'AbCdE'
console.log(solution1('AAAAaaaa', 'a')); // 'AAAAaaaa'
2번 풀이 - slice + lastIndexOf()
처음부터 part의 마지막인덱스 앞까지만 추출, + part
// 2번 풀이 slice + lastIndexOf
const solution2 = (str, part) => {
return str.slice(0, str.lastIndexOf(part)) + part;
};
console.log(solution2('AbCdEFG', 'dE')); // 'AbCdE'
console.log(solution2('AAAAaaaa', 'a')); // 'AAAAaaaa'
3번 풀이 - match
정규표현식과 match를 이용한 방법
배열의 첫 번째 요소는 매칭된 전체 문자열.
이 방식은 문자열에서 특정 부분 문자열 part가 등장하는 위치까지의 모든 문자열을 추출할 때 사용.
// 3번 풀이 match
const solution3 = (str, part) => str.match(new RegExp('.*' + part))[0];
console.log(solution3('AbCdEFG', 'dE')); // 'AbCdE'
console.log(solution3('AAAAaaaa', 'a')); // 'AAAAaaaa'
참고
나, 쳇지피티
반응형
'프론트 > JS)코딩테스트' 카테고리의 다른 글
Comments