LeetCode#6. ZigZag Conversion

    xiaoxiao2021-04-16  33

    题目:将字符串中的字符按照z字形走向排列,然后按行读取排列后的元素,返回字符串难度:Medium

    思路:将第i行的元素组成一个字符串,然后将所有行组成新的字符串;

    重点是如何知道元素字符中的第i个元素属于第几行

    定义一个int类型的变量row,代表当前元素属于第几行;然后定义一个flag标志位,标志下一个元素是往上读还是往下读的。将相同的元素放入同一个字符中(定义一个大小为numRows的字符串数组)

    代码: public class Solution { public String convert(String s, int numRows) { if(s == null || s.length() == 0 || s.length() == 1 || numRows == 1 || s.length() <= numRows){ return s; } String res[] = new String[numRows];//存zigzag变换后的每一行元素 //判断原始字符串的第i个元素所在的行 int row = 0; int flag = 1;//标志是在往上还是往下读 for(int i = 0; i < s.length();i++){ String result = "" + s.charAt(i); if(res[row] == null){ res[row] = ""; } res[row] += result;//把第i个元素加到相应的行里 //接下来是往下读原始字符串 if(row == 0){ flag = 1; } if(row == numRows-1){ flag = -1; } row += flag; } String result = ""; for(int i = 0; i < numRows; i++){ result += res[i]; } return result; } }
    转载请注明原文地址: https://ju.6miu.com/read-672429.html

    最新回复(0)