美文网首页
LeetCode第6题: zigzag-conversion(C

LeetCode第6题: zigzag-conversion(C

作者: 闫品品 | 来源:发表于2019-05-27 18:34 被阅读0次

    上一题:LeetCode第5题:longestPalindrome(C语言)

    1、基础方法
    思路:假设有一个旗标i沿着输入字符串s的字符顺序读取,且i会反复在0-numRows摇摆,当i减到0时,i递增,当i增到numRows时,i递减。不难理解,当我们需要按照Z字型排列的时候,我们需要按照新的行号row_num,依次找出row_num = 0时的所有元素,然后再找出row_num = 1时的所有元素,直到row_num = numRows时为止,当旗标i = 当前的row_num时,则可将其存入结果数组中。

    char* convert(char* s, int numRows) {
        if(numRows == 1)
            return s;
        int numColumns = strlen(s);
        char *result = (char *)malloc((numColumns + 1) * sizeof(char));
    
        int index = 0;
        for(int row_num = 0; row_num < numRows; row_num++){
            bool down = true;
            int i = 0, j = 0;
            while(j < numColumns){
                if(i == row_num){
                    result[index++] = s[j];             
                }
                i = down ? i + 1 : i - 1;
                if((i == numRows - 1) || (i == 0)){
                    down = !down;
                }
                j++;
            }
        }
        result[index] = '\0';
    
        return result;
    }
    

    本系列文章,旨在打造LeetCode题目解题方法,帮助和引导同学们开阔学习算法思路,由于个人能力和精力的局限性,也会参考其他网站的代码和思路,如有侵权,请联系本人删除。
    下一题:LeetCode第7题:reverse-integer(C语言)

    相关文章

      网友评论

          本文标题:LeetCode第6题: zigzag-conversion(C

          本文链接:https://www.haomeiwen.com/subject/gwlktctx.html