반응형
문제
https://leetcode.com/problems/zigzag-conversion/description/
풀이
문제 설명 그대로 구현했다.
String 형태의 문자 관리가 필요하기에 StringBuilder를 배열 형태로 이용하여 메모리 사용량을 줄이고, append하여 쉽게 구현 가능했다.
다만 문자 수가 열 수보다 작거나 열 수보다 문자 수가 작은 등의 예외 처리에 신경써야 했다.
코드
class Solution {
public String convert(String s, int numRows) {
if(s.length() < numRows) {
numRows = s.length();
}
StringBuilder[] temp = new StringBuilder[numRows];
boolean order = true;
int idx = 0;
for(int i = 0; i < s.length(); i++) {
if(temp[idx] == null) {
temp[idx] = new StringBuilder();
}
temp[idx].append(s.charAt(i));
if(idx >= numRows - 1) {
order = false;
} else if(idx <= 0) {
order = true;
}
idx += order? 1 : -1;
if(idx < 0) {
idx = 0;
}
}
for(int i = 1; i < temp.length; i++) {
temp[0].append(temp[i].toString());
}
return temp[0].toString();
}
}
결과
Runtime: 4 ms
Memory Usage: 45.00 MB
반응형
'LeetCode' 카테고리의 다른 글
8. String to Integer (atoi) (0) | 2024.11.12 |
---|---|
7. Reverse Integer (0) | 2024.11.10 |
5. Longest Palindromic Substring (0) | 2022.02.14 |
4. Median of Two Sorted Arrays (0) | 2022.02.06 |
3. Longest Substring Without Repeating Characters 수정 (0) | 2022.01.21 |