码迷,mamicode.com
首页 > 其他好文 > 详细

6. ZigZag Conversion

时间:2018-07-30 11:18:14      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:class   输出   boolean   ima   har   for   new   技术分享   img   

一、题目

  1、审题:

    技术分享图片

  2、分析:

    将所给字符串按照之字型展开成 n 行,展开后按照行将其输出,求组成的新字符串。

 

二、解答

  1、分析: 

    考虑用数组存放之字形图形的每一行,由于每一个行并非一次确定,故StringBuffer比较适合。图形分为上升、下降两种趋势,用 flag 进行标识,从而可以确定每个字符与数组的下标的对应关系。

  

class Solution {
    public String convert(String s, int numRows) {

        int len = s.length();
        if( len < 2 || numRows == 1)
            return s;

        StringBuffer[] sb = new StringBuffer[numRows];
        for (int i = 0; i < numRows; i++) {     // 初始化
            sb[i] = new StringBuffer();
        }

        int row = 1, index = 0;
        boolean flag = true;
        while(index < len) {

            sb[row - 1].append(s.charAt(index));
            if(flag == true) {      //下降
                row++;
                if(row == numRows)
                    flag = false;
            }
            else {                  //上升
                row--;
                if(row == 1)
                    flag = true;
            }
            index++;
        }

        for (int i = 1; i < numRows; i++) {
            sb[0].append(sb[i].toString());
        }

        return sb[0].toString();
    }
}

 

6. ZigZag Conversion

标签:class   输出   boolean   ima   har   for   new   技术分享   img   

原文地址:https://www.cnblogs.com/skillking/p/9388655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!