LeetCode 006 ZigZag Conversion - Java
阿新 • • 發佈:2017-06-04
mil cnblogs isp 字符串 lsi tex version wan app
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"
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型排列後,重新讀取,可以發現每個字符出現的位置都是有規律的,對於n高度的Z型,出現在Z中同一位置的字符/((n-1)/2)的余數是相同的,這樣不考慮n=1,如果為1新字符串是與原字符串相同的。
Java實現如下:
1 public class Solution { 2 public String convert(String s, intnumRows) { 3 int len=s.length(); 4 if(numRows==1){ 5 return s; 6 } 7 int gay=numRows*2-2; 8 StringBuffer stringBuffer=new StringBuffer(); 9 int j,h; 10 j=0; 11 while(j<len){ 12 stringBuffer.append(s.charAt(j));13 j+=gay; 14 } 15 for(int i=1;i<gay/2;i++){ 16 j=i; 17 h=gay-i; 18 while(j<len){ 19 stringBuffer.append(s.charAt(j)); 20 j+=gay; 21 if(h<len){ 22 stringBuffer.append(s.charAt(h)); 23 h+=gay; 24 } 25 } 26 } 27 j=numRows-1; 28 while(j<len){ 29 stringBuffer.append(s.charAt(j)); 30 j+=gay; 31 } 32 return stringBuffer.toString(); 33 } 34 }
LeetCode 006 ZigZag Conversion - Java