import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @param numRows int整型 * @return string字符串 */ public String decodeFlag(String s, int numRows) { // 初始化结果数组,用于按行存储解码后的字符 String[] res = new String[numRows]; // 将结果数组的每个元素初始化为空字符串 for (int i = 0; i < res.length; i++) { res[i] = ""; } // 将输入字符串转换为字符数组 char[] ch = s.toCharArray(); // 初始化索引和方向标志 int index = 1; // 当前要添加字符的行索引 int flag = 1; // 控制行索引移动的方向,初始值为向下 // 将第一个字符放入第一行 res[0] += ch[0]; // 遍历输入字符数组并按照 ZigZag 模式解码 for (int i = 1; i < ch.length; i++) { // 如果当前行索引达到了第一行或最后一行,改变方向 if (index == 0 || index == numRows - 1) { flag = -flag; // 改变方向,从向下变为向上或从向上变为向下 } // 将当前字符添加到相应的行中 res[index] += ch[i]; // 根据方向标志更新行索引 index += flag; } // 将结果数组中的每一行连接起来,形成最终的解码结果字符串 String result = ""; for (String str : res) { result += str; } return result; // 返回最终的解码结果字符串 } }
本题知识点分析:
1.数组遍历
2.字符串拼接
3.数学模拟
4.字符串转字符数组
本题解题思路分析:
1.将输入字符串转换为字符数组
2.遍历输入字符数组并按照 ZigZag 模式解码
3. 将结果数组中的每一行连接起来,形成最终的解码结果字符串