LeetCode算法题——ZigZag Conversion

    xiaoxiao2021-03-25  84

    Description: The string  "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) P A H N A P L S I I G Y I R And then read line by line:  "PAHNAPLSIIGYIR"

    Write the code that will take a string and make this conversion given a number of rows:

    string convert(string text, int nRows); convert("PAYPALISHIRING", 3)  should return  "PAHNAPLSIIGYIR"

    Zigzag:即循环对角线结构(

    0       8       16       1     7 9     15 17       2   6   10   14   18       3 5     11 13     19       4       12       20       算法思想: 向下循环 斜对角循环:gap=nRows-2(去除端点) C++ Implements: string convert(string s, int numRows) {         if(numRows==1) return s;         string str[numRows];         int i=0,gap=numRows-2;         while(i<s.size()){             for(int j=0;j<numRows&&i<s.size();j++){                 str[j]+=s[i++];             }             for(int j=gap;j>0&&i<s.size();j--){                 str[j]+=s[i++];             }         }         string res="";         for(int j=0;j<numRows;j++){             res+=str[j];         }         return res;     }
    转载请注明原文地址: https://ju.6miu.com/read-16641.html

    最新回复(0)