z字形变换 最优解 (字符串)

LeetCode第六题
题目,如图所示.

在这里插入图片描述在这里插入图片描述

思路:
通过观察结果我们可以看到每一行就是一个字符串,所以我们现在的问题就是构建每一行的字符串,然后依次连接即可.

  • 其实规律很简单,就是按将字符串依次排列的顺序,将其依次放在数组中,就像小时候玩的一条龙一样,放到对应的索引位置中即可,每个索引位置就是保存的每一行的字符串,然后从其数组中依次按索引取出,连接即可.

下面贴上代码:

 public String convert2(String s, int numRows) {
        if(numRows<2) return s;
        String[] arr=new String[numRows];
        int index=0;
        //作为index下标的增量,顺着每次加1,逆着每次加-1.
        int flag=-1;
        //将每一行依次存储到数组中,
        for(int i=0;i<s.length();i++){
            if(index==0||index==arr.length-1) flag=-flag;
            arr[index] += s.charAt(i);
            index=index+flag;
        }
        //依次取出,进行连接
        String res="";
        for(int i=0;i<arr.length;i++){
            if(arr[i]!=null)
                res += arr[i].substring(4);
        }
        return res;
    }
Tmi
发布了13 篇原创文章 · 获赞 7 · 访问量 2197

猜你喜欢

转载自blog.csdn.net/wangliangluang/article/details/104066083