ZigZag Conversion

来源:互联网 发布:做网络销售工资有多高 编辑:程序博客网 时间:2024/06/01 19:41

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"

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

class Solution {public:   string convert(string s, int nRows) {string res ="";int len =s.length();int index=0;if (nRows<=1||s.length() ==0){return s;}for (int i=0;i<len&&i<nRows;i++){int index=i;res +=s[index];for (int k=1;index<len;k++){if (i==0||i==nRows-1){index +=2*nRows -2;}else{if (k&0x01) //奇数列{index +=2*(nRows -1-i);}elseindex +=2*i;}if (index<len){res +=s[index];}}}return res;    }};




0 0
原创粉丝点击