尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

豆包 LeetCode 6.Z字形变换 TypeScript实现

豆包    LeetCode 6.Z字形变换 TypeScript实现 LeetCode 6 Z字形变换 TypeScript实现题目将字符串按Z字形排列逐行读取返回结果。函数签名typescriptfunction convert(s: string, numRows: number): string解法模拟行遍历typescript/*** param s 输入字符串* param numRows 行数* returns z字形变换后的字符串*/function convert(s: string, numRows: number): string {if (numRows 1 || numRows s.length) {return s;}// 每一行字符数组const rows: string[] new Array(numRows).fill();let curRow 0;// 方向1向下-1向上let step -1;for (const ch of s) {rows[curRow] ch;// 到达边界反转方向if (curRow 0 || curRow numRows - 1) {step * -1;}curRow step;}return rows.join();}数学公式解法不使用数组模拟直接按下标取字符周期 cycle 2 * numRows - 2typescriptfunction convert(s: string, numRows: number): string {if(numRows 1 || numRows s.length) return s;const cycle 2 * numRows - 2;let res ;for(let r 0; r numRows; r){for(let i r; i s.length; i cycle){res s[i];// 非首行尾行取斜线上的字符const second i cycle - 2 * r;if(r ! 0 r ! numRows -1 second s.length){res s[second];}}}return res;}测试用例typescriptconsole.log(convert(PAYPALISHIRING,3)); // PAHNAPLSIIGYIRconsole.log(convert(PAYPALISHIRING,4)); // PINALSIGYAHRPIconsole.log(convert(A,1)); // A复杂度- 模拟法时间O(n)空间O(n)- 数学公式法时间O(n)空间O(1)(不计输出)需要 Rust / Java / Python版本吗
返回列表