https://leetcode.com/problems/zigzag-conversion
class Solution {
public String convert(String s, int numRows) {
int level = 0;
boolean flag = true;
char[] c = s.toCharArray();
ArrayList<StringBuffer> sba = new ArrayList<StringBuffer>();
if (numRows == 1) {
return s;
}
for (int i = 0; i < numRows; i++) {
sba.add(new StringBuffer());
}
for (int i = 0; i < s.length(); i++) {
if (flag) {
if (level < numRows) {
level++;
} else {
flag = !flag;
level--;
}
} else {
if (level > 1) {
level--;
} else {
flag = !flag;
level++;
}
}
StringBuffer sb = sba.get(level - 1);
sb.append(c[i]);
}
StringBuffer result = new StringBuffer();
for (int i = 0; i < numRows; i++) {
result.append(sba.get(i));
}
return result.toString();
}
}
String을 붙이는데에는 StringBuffer를 사용하였음, 지그재그는 12343212...로 반복되는 반복문을 만들고 numRows
크기의 ArrayList를 만들어 그 level에 맞는 char
를 ArrayList에 넣어 level순으로 String을 붙여서 출력 numRows
가 1일때는 그냥 출력을 해야함