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 N A P L S I I G Y I R
And then read line by line:  "PAHNAPLSIIGYIR"

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

 

即写成z字型,假设字符串是ABCDEFGHIJK,行数是5,则转换为 A           I B       H J C    G    K  D F E   class Solution {     public String convert(String s, int numRows) {         char[] c = s.toCharArray();         int len = c.length;         StringBuffer[] sb = new StringBuffer[numRows];         for (int i = 0; i < sb.length; i++)              sb[i] = new StringBuffer();                  int i = 0;         while (i < len) {             for (int idx = 0; idx < numRows && i < len; idx++)                 sb[idx].append(c[i++]); //原字符串从上往下加入到StringBuffer中             for (int idx = numRows-2; idx >= 1 && i < len; idx--)                 sb[idx].append(c[i++]); //原字符串从下往上加入到StringBuffer中         }         for (int idx = 1; idx < sb.length; idx++)             sb[0].append(sb[idx]);         return sb[0].toString();     } } 分享:

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄