算法:z字形排列 - Go语言中文社区

算法:z字形排列


将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
在这里插入图片描述

class Solution {
public:
    string convert(string s, int numRows) {
        string result="";
        //如果排序长度为1,或者字符的长度小于z字形长度,就直接输出s
        if(numRows==1||s.size()<=numRows)
            return s;
          //从第一行依次遍历到最后一行
        for(int rows=0;rows<numRows;rows++)
        {
        //first为直列所在的字符串位置
            int first=rows;
            //second为斜线所在列的字符串的位置
            int second=2*numRows-2-rows;
            //判断直列是否存在
            for(;first<s.size();)
            {
            //如果存在,就将first存在result中
                result+=s[first];
                //关键,判断是否斜列存在,行数为0或者为最后一行时不存在;并且判断位置是否大于字符串长度
                if(rows!=0&&rows!=numRows-1&&second<s.size())
                {
                    result+=s[second];
                }
               //下一个位置,每行一直一斜,依次下去
                first+=2*numRows-2;
                second+=2*numRows-2;
            }
        }
        return result;
    }
};

在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lzm123456lq/article/details/90577437
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-18 13:59:49
  • 阅读 ( 894 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢