ZigZag Conversion

题目

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".

解题思路是:首尾中的数字的间距为2*nrows-2,中间部分还需要加入一些数据,这个数据与前一个数据之间的关系为2(nrows-1-i).代码为:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* convert(char* s, int numRows) {
int k,i,j;
int k1=0;


char *s1;
int gap=2*numRows-2;
k = strlen(s);
s1=(char*)malloc(sizeof(char)*k);
if(numRows==1||k<=numRows) return s;
for(i=0;i<k;i+=gap){
s1[k1++]=s[i];
}
for(i=1;i<numRows-1;i++){
for(j=i;j<k;j+=gap){
s1[k1++]=s[j];
if((j+2*(numRows-1-i)<k))
s1[k1++]=s[j+2*(numRows-1-i)];
 }
    }
for(i=numRows-1;i<k;i+=gap)
s1[k1++]=s[i];
s1[k1]='\0';
return s1;


}


int main()
{   
char s[]="glzamzp";
char *s1=(char*)malloc(sizeof(char)*strlen(s));
s1=convert(s,5);


printf("原来的字符%s \n之行之后的字符%s\n %d\n",s,s1, strlen(s1));   
}


但我不知道为什么提交上去的时候,求解答

Submission Result: Runtime ErrorMore Details 
Last executed input: "glzamzp", 5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值