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();
        }
    }
  • 相关阅读:
    Ehcache缓存配置
    spring3使用task:annotation-driven开始定时
    Constructor >> @Autowired >> @PostConstruct
    面试转载
    阿里面试:MYSQL的引擎区别
    Redis的主从复制的原理介绍
    微服务的调用链
    java的零拷贝机制
    存储过程与触发器面试
    ABA问题
  • 原文地址:https://www.cnblogs.com/skillking/p/9388655.html
Copyright © 2011-2022 走看看