LeetCode---ZigZag Conversion

题目大意:给出一个字符串和行号,其实按ZigZag模式排列的输出其转化后的排列方式。

ZigZag的排列规律:


算法思想:

设置一个string[rowNums]数组,和一个方向标记,通过方向标记将字符串写入string[rownums]中,然后将其拼接起来即是转换结果。方向分为向下和向上,向下时按行号递增的方式填写数组触碰到边界改变方向,向上时按对角线规律填写数组,遇到上边界改变方向。

代码如下:

class Solution {
public:
    string convert(string s, int numRows) {
          if(numRows<=1) return s;   
		 string res;
         string subres[numRows];
         int i=0,k=0;
         bool isDown=true;
         while(k<s.length()){
         	if(isDown){
         	    subres[i].push_back(s[k++]);
				if(i==numRows-1)
				     isDown=false;
				else 
				    ++i;	
			 }
			 else{
			 	subres[--i].push_back(s[k++]);
			 	if(i==0)
			 	    {
					 isDown=true;
					 ++i;
				   }
			 }
		 }
		 for(i=0;i<numRows;++i)
		    res+=subres[i];
		return res;
    }
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值