leetcode_num6_Zigzag

来源:互联网 发布:厦门理工软件学院地址 编辑:程序博客网 时间:2024/06/18 08:00

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"

找规律

#include<iostream>#include<string>using namespace std;void Line(string s,string *res,int length,int cyclelen,int index,int nRows);string convert(string s, int nRows) {int length=s.length();if(length<=0||nRows<0)return NULL;if(nRows==0||nRows==1)return s;int cyclelen=2*nRows-2;string *res=new string[nRows];for(int i=0;i<nRows;i++)res[i]="";Line(s,res,length,cyclelen,0,nRows);Line(s,res,length,cyclelen,nRows-1,nRows);if(nRows>2){for(int i=1;i<nRows-1;i++)Line(s,res,length,cyclelen,i,nRows);}string result;for(int i=0;i<nRows;i++)result+=res[i];return result;        }void Line(string s,string *res,int length,int cyclelen,int index,int nRows){if((index==0)||(index==nRows-1)){int j=index;while(j<length){res[index]+=s[j];j+=cyclelen;}}else{int j=index;int k=cyclelen-j;while(j<length||k<length){if(j<length)res[index]+=s[j];elsebreak;if(k<length)res[index]+=s[k];elsebreak;j+=cyclelen;k+=cyclelen;}}}void main(){string s="PAYPALISHIRING";string result=convert(s,3);cout<<result<<endl;system("pause");}


0 0
原创粉丝点击