zoukankan      html  css  js  c++  java
  • 6. ZigZag Conversion

    一、题目

      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();
        }
    }
  • 相关阅读:
    浅析BIO、NIO、AIO
    equals()和hashCode()区别
    mysql分区
    java反射
    设计模式
    两个线程一个生产者个一个消费者
    Redis事务
    常用面试题
    springboot整合redis(注解形式)
    ElasticSearch6更新与重大变化
  • 原文地址:https://www.cnblogs.com/skillking/p/9388655.html
Copyright © 2011-2022 走看看