当前位置:首页 > 编程笔记 > 正文
已解决

【LeetCode算法-06】 Z字型转换 问题

来自网友在路上 154854提问 提问时间:2023-11-03 12:53:02阅读次数: 54

最佳答案 问答题库548位专家为你答疑解惑

Z字形转换是指在一个二维网格上,按照从左到右、从上到下、再从右到左、从下到上的Z字形顺序,依次选取每个单元格中的数字。最后将所有的数字连接成一个新的字符串。

例如,对于下面这个网格:

[[ '5', '1', '9', '5'],['7', '5', '3', ''], ['2', '6', '', '8'],['', '9', '8', '']
]

经过Z字形转换之后,得到的新字符串应该是"519575326898"。

下面是用Java实现这个功能的代码:

import java.util.ArrayList;
import java.util.List;public class Solution {public String convert(String s, int numRows) {if (numRows == 1 || numRows >= s.length()) {return s;}List<StringBuilder> rows = new ArrayList<>(numRows);for (int i = 0; i < numRows; i++) {rows.add(new StringBuilder());}boolean down = true;int index = 0;for (char c : s.toCharArray()) {rows.get(index).append(c);if (index == 0 || index == numRows - 1) {down = !down;}index += down ? 1 : -1;}StringBuilder result = new StringBuilder();for (StringBuilder row : rows) {result.append(row.toString());}return result.toString();}
}

在这段代码中,我们首先创建了一个ArrayList来存储每一行的字符。然后我们遍历输入字符串s中的每一个字符,根据当前是否向下移动,将字符添加到对应的行中。最后我们将所有的行连接起来,就得到了新的字符串。

例如,对于上面的例子,我们得到的结果应该是"519575326898"。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【LeetCode算法-06】 Z字型转换 问题":http://eshow365.cn/6-31081-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!