Leetcode_6_ZigZagConvetsion

本文介绍了一种使用C语言实现的字符串转换算法,该算法将输入的字符串以Z字形的方式进行重新排列,考虑到特殊情况和周期性规律。通过分析和编码实践,详细展示了如何根据不同行数调整字符串的布局,特别关注了边界条件和循环结构。
摘要由CSDN通过智能技术生成

和初学C语言时,打印杨辉三角、三角形的“*”以及99乘法表类似,找到规律,判断好周期即可

不同的是,本题要考虑全面,注意一些特殊情况

char* convert(char* s, int numRows) {
	if(numRows==1)
		return s;
    char *ans=0,*ptr;
	int n=strlen(s),T=2*(numRows-1),rcount,i;
	ans=(char*)malloc(n+1);
	ptr=ans;
	for(rcount=0;rcount<numRows;rcount++)
	{
		if(rcount>=n)
			break;
		if(rcount==0 || rcount==numRows-1)
		{
			for(i=rcount;i<n;i=i+T)
			{
				*ptr=s[i];
				ptr++;
			}
		}
		else
		{
			for(i=rcount;i<n;i=i+T)
			{
				*ptr=s[i];
				ptr++;
				if(i+T-2*rcount<n)
				{
					*ptr=s[i+T-2*rcount];
					ptr++;
				}
			}
		}
	}
	*ptr=0;
	return ans;
}

最后纪念一下这个100%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值