数据结构与算法练习33

z字形变换

在这里插入图片描述

解题思路:

直接按行排序,用flag标识是往下走还是往上,直到行数为0或numrows才变。

代码:

    public string Convert(string s, int numRows)     
    {     
       if(numRows==1||s.Length<numRows)//如果行数等于1或者s的长度小于行数,直接返回s。        
       return s;        
       List<StringBuilder> lgx=new List<StringBuilder>();//用一个链表元素为stringbuilder来存储每一行的字符。           
       for(int i=0;i<numRows;i++)        
       {         
          StringBuilder cc=new StringBuilder();            
          lgx.Add(cc);        
       }        
       int row=0;//记录当前在哪一行。       
       bool flag=false;//在第一行或最后一行的时候要转向。true往下,false往上。        
       foreach(var temp in s)        
       {        
           lgx[row].Append(temp);            
           if(row==0||row==numRows-1)            
           flag=!flag;            
           row+=flag?1:-1;        
        }//将s中元素分别存放在链表对应行内。        
       StringBuilder result=new StringBuilder();
       foreach( var temp in lgx)        
       {         
          result.Append(temp);        
       }        
       return result.ToString();    
   }

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值