ゼロから始めるLeetCode Day43「5. Longest Palindromic Substring」
概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 Twitter やってます。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day42「2. Add Two Numbers」 次回 ゼロから始めるLeetCode Day44「543. Diameter of Binary Tree」 Twitter やってます。 問題 5. Longest Palindromic Substring 難易度はMedium。 Top 100 Liked Questionsからの抜粋です。 文字列である s が与えられるのでその文字列の中で最も長い回文(どちらから読んでも同じになる)を探し出すようなアルゴリズムを設計してください。 Input: “babad” Output: “bab” Note: “aba” is also a valid answer. Input: “cbbd” Output: “bb” 以前解いた、 ゼロから始めるLeetCode Day30「234. Palindrome Linked List」 こちらに似ていますが、前回はあくまで与えられた連結リストが回文であるかをチェックするだけであったのに対し、今回は文字列でその中から最長のものを抽出するというものに変わっており、少し複雑になっています。 解法 とはいえ、回文の問題のオーソドックスな考え方は前回のような要素をひっくり返した