欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > LeetCode 面试经典150题 Z字形变换

LeetCode 面试经典150题 Z字形变换

2024/10/25 18:28:21 来源:https://blog.csdn.net/qq_57349657/article/details/142891846  浏览:    关键词:LeetCode 面试经典150题 Z字形变换

题目

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:

P   A   H   N
A P L S I I G
Y   I   R

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

思路

代码

class Solution {public String convert(String s, int numRows) {if (numRows == 1) return s;int len = Math.min(s.length(), numRows);String[] rows = new String[len];for (int i = 0; i < len; i++)rows[i] = "";int loc = 0;boolean down = false;for (int i = 0; i < s.length(); i++) {rows[loc] += s.substring(i, i + 1);if (loc == 0 || loc == numRows - 1) // 因为是Z字形,所以从上往下再从下往上down = !down;loc += down ? 1 : -1;}String ans = "";for (String row : rows) {ans += row;}return ans;}
}

性能

时间复杂度o(n)

空间复杂度o(n)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com