[리트코드] 5. Longest Palindromic Substring / Javascript

2021. 9. 9. 20:11·LeetCode
반응형

문제주소 : https://leetcode.com/problems/longest-palindromic-substring/

 

Longest Palindromic Substring - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


<문제 설명>

더보기

Given a string s, return the longest palindromic substring in s.

 

Example 1:

Input: s = "babad" Output: "bab" Note: "aba" is also a valid answer.

Example 2:

Input: s = "cbbd" Output: "bb"

Example 3:

Input: s = "a" Output: "a"

Example 4:

Input: s = "ac" Output: "a"

 

Constraints:

  • 1 <= s.length <= 1000
  • s consist of only digits and English letters.

 

<풀이법>

▒ 한줄 개념: 팰린드롬 ▒ 

특정 인덱스에서 펠린드롬이 되는 경우는 2가지가 있습니다.

 

1: 짝수 펠린드롬 ex) gg, abba, acbbca 

2: 홀수 펠린드롬 ex) cdc, bcacb 

 

반복문을 통해 string의 각 인덱스에 대해 확인하며, 해당 인덱스의 짝수 펠린드롬의 최대 길이와 홀수 펠린드롬의 최대 길이를 구해 기존 최장 펠린드롬과 비교하여 갱신해주면 됩니다.

 

<코드(Javascript)>

/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
    return s.split('').reduce((acc, cur, idx, arr) => {
        let evenOffset = 0;
        let oddOffset = 0;
        while(evenOffset <= idx && idx + 1 + evenOffset < arr.length && 
              arr[idx - evenOffset] === arr[idx + 1 + evenOffset]){
            evenOffset++;
        }
        
        while(oddOffset < idx && idx + 1 + oddOffset < arr.length && 
              arr[idx - 1 - oddOffset] === arr[idx + 1 + oddOffset]){
            oddOffset++;
        }

        const evenLength = evenOffset * 2;
        const oddLength = oddOffset ? oddOffset * 2 + 1 : 1;
        if(acc.length > evenLength && acc.length > oddLength){
            return acc;
        }
        else if(evenLength > oddLength){
            return s.substr(idx - evenOffset + 1, evenLength);
        }else{
            return s.substr(idx - oddOffset, oddLength);
        }
    },'')
};

 

 

더 많은 코드 보기(GitHub) : github.com/dwkim-97/CodingTest

 

 

반응형
저작자표시 (새창열림)

'LeetCode' 카테고리의 다른 글

[리트코드] 45. Jump Game II / Javascript  (0) 2021.09.28
[리트코드] 336. Palindrome Pairs / Javascript  (0) 2021.09.15
[리트코드] 2. Add Two Numbers / Javascript  (0) 2021.09.09
[리트코드] 1130. Minimum Cost Tree From Leaf Values / Javascript  (0) 2021.09.08
[리트코드] 1647. Minimum Deletions to Make Character Frequencies Unique / Javascript  (0) 2021.09.08
'LeetCode' 카테고리의 다른 글
  • [리트코드] 45. Jump Game II / Javascript
  • [리트코드] 336. Palindrome Pairs / Javascript
  • [리트코드] 2. Add Two Numbers / Javascript
  • [리트코드] 1130. Minimum Cost Tree From Leaf Values / Javascript
개발하는 사막여우
개발하는 사막여우
개발개발 주저리주저리
    반응형
  • 개발하는 사막여우
    개발하는 사막여우
    개발하는 사막여우
  • 전체
    오늘
    어제
    • All (311)
      • Books (13)
        • 읽기 좋은 코드가 좋은 코드다 (13)
      • Study (6)
        • Blockchain (3)
        • Algorithm (3)
      • Baekjoon (36)
      • Programmers (166)
      • LeetCode (15)
      • Open Source (1)
        • Youtube Popout Player (1)
      • Language (32)
        • Python (9)
        • JS (8)
        • Java (5)
        • HTML (6)
        • CSS (4)
      • Library & Framework (15)
        • React.js (15)
      • IDE (2)
        • IntelliJ (2)
      • Airdrop (9)
      • Tistory (2)
      • etc.. (7)
        • Cozubi (6)
        • lol-chess (0)
  • 블로그 메뉴

    • Github
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    코인줍줍
    파이썬
    Java
    프로그래머스
    알고리즘문제풀이
    카카오 코딩테스트
    Cozubi
    2018 KAKAO BLIND RECRUITMENT
    카카오 공채
    카카오 알고리즘 문제
    읽기 좋은 코드가 좋은 코드다
    백준
    코주비
    프로그래머스 위클리 챌린지
    Python
    신규 코인 에어드랍
    코딩테스트연습
    programmers
    클린 코드 작성법
    클린 코드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
개발하는 사막여우
[리트코드] 5. Longest Palindromic Substring / Javascript
상단으로

티스토리툴바