LeetCode 6. ZigZag Conversion

xiaoxiao2021-02-28  78

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

Subscribe to see which companies asked this question.

Z字型打印。

public class Solution { public String convert(String s, int numRows) { int len = s.length(); if (len<=numRows||numRows==1){ return s; } int f = 0; StringBuilder ans = new StringBuilder(); for(int j=0;j<numRows;j++){ int l = 0; for(int i=j;i<len;i+=(f==0?2*(numRows-j-1):2*j)){ ans.append(s.charAt(i)); if(j!=0&&j!=numRows-1){ f = 1 - f; } if(l==0){ f = 0; l = 1; } if(j==numRows-1){ f = 1; l = 1; } if(ans.length()==s.length()){ break; } } } return ans.toString(); } }tips:一定记得用StringBuilder! 相同的程序,使用String耗时128ms,stringbuilder加速一倍以上

转载请注明原文地址: https://www.6miu.com/read-37396.html

最新回复(0)