diff --git a/src/main/java/leetcode/editor/cn/ZigzagConversion.java b/src/main/java/leetcode/editor/cn/ZigzagConversion.java new file mode 100644 index 0000000..049e9a8 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/ZigzagConversion.java @@ -0,0 +1,96 @@ +//将一个给定字符串 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" +// +//示例 2: +// +// +//输入:s = "PAYPALISHIRING", numRows = 4 +//输出:"PINALSIGYAHRPI" +//解释: +//P I N +//A L S I G +//Y A H R +//P I +// +// +// 示例 3: +// +// +//输入:s = "A", numRows = 1 +//输出:"A" +// +// +// +// +// 提示: +// +// +// 1 <= s.length <= 1000 +// s 由英文字母(小写和大写)、',' 和 '.' 组成 +// 1 <= numRows <= 1000 +// +// Related Topics 字符串 +// 👍 1175 👎 0 + +package leetcode.editor.cn; + +//6:Z 字形变换 +public class ZigzagConversion { + public static void main(String[] args) { + //测试代码 + Solution solution = new ZigzagConversion().new Solution(); + } + + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public String convert(String s, int numRows) { + if (numRows == 1 || s == null) { + return s; + } + String[] strs = new String[numRows]; + for (int i = 0; i < strs.length; i++) { + strs[i] = ""; + } + String str = ""; + int forNum = 2 * numRows - 2; + for (int i = 0; i < s.length(); i++) { + int index = (i + 1) % forNum; + if (index > numRows) { + strs[forNum + 1 - index] += "" + s.charAt(i); + } else if (index == 0) { + strs[1] += "" + s.charAt(i); + } else { + strs[index - 1] += "" + s.charAt(i); + } + } + for (String temp : strs) { + str += temp; + } + return str; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/ZigzagConversion.md b/src/main/java/leetcode/editor/cn/ZigzagConversion.md new file mode 100644 index 0000000..040ad67 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/ZigzagConversion.md @@ -0,0 +1,53 @@ +

将一个给定字符串 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"
+
+示例 2: + +
+输入:s = "PAYPALISHIRING", numRows = 4
+输出:"PINALSIGYAHRPI"
+解释:
+P     I    N
+A   L S  I G
+Y A   H R
+P     I
+
+ +

示例 3:

+ +
+输入:s = "A", numRows = 1
+输出:"A"
+
+ +

 

+ +

提示:

+ + +
Related Topics
  • 字符串
  • \n
  • 👍 1175
  • 👎 0
  • \ No newline at end of file