Java | Leetcode Java题解之第6题Z字形变换

题目:

题解:

java 复制代码
class Solution {
    public String convert(String s, int numRows) {
        int n = s.length(), r = numRows;
        if (r == 1 || r >= n) {
            return s;
        }
        int t = r * 2 - 2;
        int c = (n + t - 1) / t * (r - 1);
        char[][] mat = new char[r][c];
        for (int i = 0, x = 0, y = 0; i < n; ++i) {
            mat[x][y] = s.charAt(i);
            if (i % t < r - 1) {
                ++x; // 向下移动
            } else {
                --x;
                ++y; // 向右上移动
            }
        }
        StringBuffer ans = new StringBuffer();
        for (char[] row : mat) {
            for (char ch : row) {
                if (ch != 0) {
                    ans.append(ch);
                }
            }
        }
        return ans.toString();
    }
}
相关推荐
凤山老林12 分钟前
04-Java JDK, JRE和JVM
java·开发语言·jvm
camellias_6 小时前
【无标题】
java·tomcat
咸鱼2.07 小时前
【java入门到放弃】需要背诵
java·开发语言
椰猫子7 小时前
Java:异常(exception)
java·开发语言
6Hzlia8 小时前
【Hot 100 刷题计划】 LeetCode 48. 旋转图像 | C++ 矩阵变换题解
c++·leetcode·矩阵
win x8 小时前
Redis 使用~如何在Java中连接使用redis
java·数据库·redis
星晨雪海8 小时前
基于 @Resource 的支付 Service 多实现类完整示例
java·开发语言
阿维的博客日记8 小时前
什么是逃逸分析
java·juc
Ricky_Theseus9 小时前
C++右值引用
java·开发语言·c++
Rick19939 小时前
Java内存参数解析
java·开发语言·jvm