📝

Leet Code [14] Longest Common Prefix

2023/12/08に公開

leetcode始めます。
主にPHPを使います。
まれにJSやRubyを使うかもしれません。
ごくまれに他の言語に挑戦するかもしれません。

https://leetcode.com/problems/longest-common-prefix/description/

<?php
/*
 * @lc app=leetcode id=14 lang=php
 *
 * [14] Longest Common Prefix
 */

// @lc code=start
class Solution {

    /**
     * @param String[] $strs
     * @return String
     */
    function longestCommonPrefix($strs) {
        $result = '';

        $startsBy = [];
        for ($i = 0; $i <= 200; $i++){
            $char = '';
            foreach($strs as $str) {
                // 文字数が$iに追いついたら終了
                if (strlen($str) === $i){
                    $char = '';
                    break;
                }

                if ($char === '') {
                    // 1周目は変数に格納
                    $char = substr($str, $i, 1);
                } elseif ($char === substr($str, $i, 1)) {
                    // 2周目以降は同じ文字なら継続、異なれば終了
                    continue;
                } else {
                    // 異なれば、その文字は破棄
                    $char = '';
                    break;
                }
            }
            // $charに値があれば、そこまでは同じprefixを持っている
            // マージ用の変数に詰めて、$charを初期化
            if ($char !== '') {
                $startsBy[] = $char;
                $char = '';
            } else {
                // $charが空でくれば処理終了
                break;
            }
        }
        // マージ用の変数をimplode
        $result = implode('', $startsBy);

        return $result;
    }
}
// @lc code=end

Discussion