
<?phpclass Solution { private $ret = []; /** * LEETCODEISHIRINGLEETCODEISHIRING * * L D R E I N * E OE II ET ES IG * EC IH NL CD HR * T S G O I * * @param $s * @param $numRows * @return string */ public function zigzag($s, $numRows) : string { if (strlen($s) <= 1 || $numRows == 1) return $s; $preI = -1; $sign = 'down'; for ($i = 0; $i <= strlen($s); $i++) { if ($sign == 'up') { $preI = $preI - 1; $this->assign($preI, $s[$i]); if ($preI == 0 ) { $sign = 'down'; } } else { $preI = $preI + 1; $this->assign($preI, $s[$i]); if ($preI == $numRows - 1) { $sign = 'up'; } } } return implode("\n", array_map(function ($a) {return implode('', $a);}, $this->ret)); } // 赋值 private function assign($a, $value, $fill = ' ') { $this->ret[$a][] = $value; foreach ($this->ret as $k => $v) { if ($k != $a) { $this->ret[$k][] = $fill; } } }}$cls = new Solution();$r = $cls->zigzag('LEETCODEISHIRINGLEETCODEISHIRINGLEETCODEISHIRINGLEETCODEISHIRINGLEETCODEISHIRING', 8);print_r($r);