[LeetCode] Zigzag Conversion

KwonSC·2022년 2월 22일
0

LeetCode - Java

목록 보기
5/8
post-thumbnail

https://leetcode.com/problems/zigzag-conversion


Code

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();
    }
}

Solution

String을 붙이는데에는 StringBuffer를 사용하였음, 지그재그는 12343212...로 반복되는 반복문을 만들고 numRows크기의 ArrayList를 만들어 그 level에 맞는 char를 ArrayList에 넣어 level순으로 String을 붙여서 출력 numRows가 1일때는 그냥 출력을 해야함

0개의 댓글