面试经典-26-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);

示例 1:

输入:s = “PAYPALISHIRING”, numRows = 3
输出:“PAHNAPLSIIGYIR”

class Solution {
    public String convert(String s, int numRows) {
        if (numRows == 1) {
            return s;
        }
        List[] lists = new ArrayList[numRows];
        for (int i = 0; i < numRows; i++) {
            lists[i] = new ArrayList<Character>();
        }

        int index = 0;
        boolean flag = true;
        // 0 1 2 1 0 1 2
        int i = 0;
        while (index < s.length()) {
            if (flag) {
                if (i < numRows) {
                    lists[i++].add(s.charAt(index++));
                } else {
                    flag = false;
                    i -= 2;
                }

            } else {
                if (i >= 0) {
                    lists[i--].add(s.charAt(index++));
                } else {
                    flag = true;
                    i += 2;
                }
            }

        }
        StringBuffer sb = new StringBuffer();
        for (int j = 0; j < numRows; j++) {
            for (int k = 0; k < lists[j].size(); k++) {
                sb.append(lists[j].get(k));
            }
        }
        return sb.toString();
    }
}

相关推荐

  1. 面试经典-26-Z 字形变换

    2024-03-15 18:52:02       43 阅读
  2. Z字形变换

    2024-03-15 18:52:02       40 阅读
  3. 程序分享--常见算法/编程面试题:Z 字形变换

    2024-03-15 18:52:02       41 阅读
  4. Leetcode-06-Z字形变换

    2024-03-15 18:52:02       44 阅读
  5. 力扣经典150题第二十二题:Z 字形变换

    2024-03-15 18:52:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 18:52:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 18:52:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 18:52:02       87 阅读
  4. Python语言-面向对象

    2024-03-15 18:52:02       96 阅读

热门阅读

  1. mysql统计数据库大小

    2024-03-15 18:52:02       40 阅读
  2. TCP客户端发送结构体数据

    2024-03-15 18:52:02       39 阅读
  3. 数仓开发之ODS层

    2024-03-15 18:52:02       47 阅读
  4. 微信小程序canvas画布不清晰解决方法

    2024-03-15 18:52:02       43 阅读
  5. PyMySQL

    2024-03-15 18:52:02       42 阅读
  6. 设置docker和docker容器开机自启

    2024-03-15 18:52:02       42 阅读
  7. C语言(数组)单元练习二

    2024-03-15 18:52:02       38 阅读
  8. 有趣之matlab-烟花

    2024-03-15 18:52:02       43 阅读
  9. 关于Mysql锁知识的整理,全面了解Mysql加锁规则

    2024-03-15 18:52:02       42 阅读
  10. 从中国到印尼海运申报和清关流程

    2024-03-15 18:52:02       44 阅读