<?php
/**
* N 字形变换
*
* User: hihone
* Date: 2019/2/1
* Time: 14:26
* Description:
* 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 N 字形排列。
* 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:
* L C I R
* E T O E S I I G
* E D H N
*/
/**
* @param $s
* @param $numRows
*
* @return string
*/
function convert($s, $numRows)
{
if ($numRows == 1) return $s;
$len = min(strlen($s), $numRows);
$data = [];
#构造行数
for ($i = 0; $i < $len; $i++) array_push($data, []);
$curRow = 0;
$down = false;
foreach (str_split($s) as $key => $val) {
array_push($data[$curRow], $val);
if ($curRow == 0 || $curRow == $numRows - 1) $down = !$down;
$down ? ++$curRow : --$curRow;
}
$result = [];
array_map(function ($value) use (&$result) {
$result = array_merge($result, array_values($value));
}, $data);
return implode('', $result);
}
$s = 'PAYPALISHIRING';
$r = convert($s, 3);
echo $r;#PAHNAPLSIIGYIR
N字形变换
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 需求 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCOD...
- The string "PAYPALISHIRING" is written in a zigzag patter...