Java Programming interview coding question.
Question:
Question:
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 s, int numRows);
Example 1:
Input: s = "PAYPALISHIRING", numRows = 3 Output: "PAHNAPLSIIGYIR"Java solution
public class MainClass { public static void main(String[] args) { String convertedString = convert("PAYPALISHIRING", 4); System.out.println(convertedString); /**P A H N * APLSIIG * Y I R *=PAHNAPLSIIGYIR */ } public static String convert(String s, int numRows) { if(numRows == 1) return s; List<StringBuilder> rows = new ArrayList<>(); for(int i = 0; i < Math.min(numRows, s.length()); i++){ rows.add(new StringBuilder()); } int curRow = 0; boolean goingDown = false; for(char c: s.toCharArray()){ rows.get(curRow).append(c); if(curRow == 0 || curRow == numRows - 1){ goingDown = !goingDown; } curRow += goingDown ? 1 : -1; } StringBuilder ret = new StringBuilder(); for(StringBuilder row: rows){ ret.append(row); } return ret.toString(); } }
Comments
Post a Comment