6Z字形变换

题目


思路
1.文字转换有固定规则
2.在长度内有序取数
代码

char* convert(char* s, int numRows) {
    
    int len = 0, gap = 0, i = 0, j = 0, index = 0, next_j = 0;
    char *ret_s = NULL;
    
    if (NULL == s)
    {
        return NULL;
    }
    
    if (numRows < 2)
    {
        return s;
    }
    
    len = strlen(s);
    gap = numRows*2 - 2;//1个循环体间隔Z去掉最后一横的部分,也是每一排除掉中间部分的间隔位
    
    /*
     
     numRows = 3
     
     0   4   8
     1 3 5 7 9
     2   6
     
     */
    
    ret_s = malloc(len + 1);
    memset(ret_s, 0, len);
    
    for (i = 0; i < numRows; i++)
    {
        for (j = i; j < len; j += gap)
        {
            ret_s[index] = s[j];//间隔添加数据04815926
            index++;
            next_j = j + gap - i * 2;
            
            if (i != 0 && i != (numRows - 1) && next_j < len)//去掉第1排与最后排(无特殊数据)
            {
                ret_s[index] = s[next_j];//添加特殊数据37
                index++;
            }
        }
    }
    
    ret_s[len] = '\0';
    
    return ret_s;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,721评论 0 13
  • 2017-04-07首次IPO募集19.7亿,本次可转债募集21.53亿。 摘自浩渺的星空:4月26日新凤转债发行...
    周益军阅读 3,954评论 0 0
  • 难得一次四人结伴培训,好开心!白天的时间培训日程满满,晚上利用闲暇时间兜兜转转,陌生的城市啊!也有曾经熟悉的...
    00的角落阅读 1,891评论 0 0
  • 【我在悦读】-木木 【书名】:《说话的魅力》 【作者】:刘墉 【篇目】:教你幽默到心田(13-14章) 【收获】 ...
    木木_cd40阅读 1,333评论 0 0
  • 这个命题是正确的吗?大家有什么样的看法?
    jpleo阅读 1,022评论 0 0

友情链接更多精彩内容