【Leetcode】zigzagConversion JAVA

来源:互联网 发布:国内域名有哪些 编辑:程序博客网 时间:2024/05/17 01:28

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

For the record...what if 4 and 5:

n=4
P              I              N
A         L  S         I   G
Y   A       H    R
P              I

N=5
P               H
A          S  I
Y      I       R
P   L          I      G
A              N

//P              I              N//A         L  S         I   G//Y   A       H    R//P              Ipublic class zigzagConversion {public static void main(String args[]){zigzagConversion zz = new zigzagConversion();System.out.println(zz.convert("paypalishiring",4));}public String convert(String s, int nRows) {if(s == null || s.length()==0 || nRows <=0)          return "";      if(nRows == 1)          return s;      StringBuilder res = new StringBuilder();      int size = 2*nRows-2;      for(int i=0;i<nRows;i++)      {          for(int j=i;j<s.length();j+=size)          {              res.append(s.charAt(j));              if(i!=0 && i!=nRows-1 && j+size-2*i<s.length())                  {            System.out.println("size:"+size+" i:"+i+" j:"+j+" is "+s.charAt(j+size-2*i));            res.append(s.charAt(j+size-2*i));                  }        }                      }      return res.toString();      }}


0 0
原创粉丝点击