290. Word Pattern

class Solution {

    /**
     * @param String $pattern
     * @param String $s
     * @return Boolean
     */
    function wordPattern($pattern, $s) {
        $words = explode(' ', $s);
        if (count($words) != strlen($pattern)) {
            return false;
        }
        $rules = []; // [patteren => word]
        foreach($words as $index => $word) {
            if (isset($rules[$pattern[$index]])) {
                // current is not matched
                if ($rules[$pattern[$index]] !== $word) {
                    return false;
                }
            }
            // try to define rule
            else {
                if (in_array($word, $rules)) {
                    return false;
                } else {
                    $rules[$pattern[$index]] = $word;
                }
            }
        }

        return true;
    }
}

Last updated