6. ZigZag Conversion

来源:互联网 发布:网络写作软件哪个好 编辑:程序博客网 时间:2024/06/03 16:55

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   NA P L S I I GY   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".

Subscribe to see which companies asked this question

c代码如下:

竟然花了132ms,而且直接建立数组不行

char* convert(char* s, int numRows) {
    int i,j,k=0;
    int l,n;
    l=strlen(s);
    char*convert=(char*)malloc(sizeof(char)*(l+1));// 
    //char convert[1000];
    convert[l]='\0';
    if(numRows==1||l==1) return s;
    n=2*numRows-2;
    for(i=0;i<numRows;i++)
    {
        for(j=i;j<l;j++)
        {
            if( j%n==i||j%n==n-i )
            {
                convert[k++]=s[j];
            }
        }
    }
    return convert;
}

0 0