class Solution {
/**
* @param String $pattern
* @param String $str
* @return Boolean
*/
function wordPattern($pattern, $str) {
if (empty($pattern) || empty($str)) {
return false;
}
$patternMap = str_split($pattern);
$strMap = explode(" ", $str);
if (count($patternMap) != count($strMap)) {
return false;
}
$map = [];
$reverseMap = [];
foreach ($patternMap as $key => $p) {
if (array_key_exists($strMap[$key], $reverseMap) && $reverseMap[$strMap[$key]] != $p) {
return false;
}
if (array_key_exists($p, $map)) {
if ($map[$p] == $strMap[$key]) {
continue;
} else {
return false;
}
}
$reverseMap[$strMap[$key]] = $p;
$map[$p] = $strMap[$key];
}
return true;
}
}