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. 将结果数组中的每一行连接起来,形成最终的解码结果字符串

京公网安备 11010502036488号