https://leetcode.com/problems/zigzag-conversion/description
Q. string s가 주어질 때, 아래와 같이 지그재그로 변경하고 이후 변경된 s를 출력하라.
Solution.
우선 문제를 해석해 본다.
첫째열 string은 (세로로) 그대로 써 준다.
다음 역순으로 row버퍼에 접근하며 돌아가면서 row-2 개를 도중에 써 준다.
위 두 과정을 row 만큼의 버퍼에 s 의 길이가 다 할때까지 반복한다.
그리고 row대로 재구성된 s를 다시 이어 붙힌다.
로직대로 코드를 작성한다.
더보기
public string Convert(string s, int numRows)
{
List<string> strings = new List<string>();
for(int q = 0; q < numRows; ++q)
strings.Add("");
int idx = 0;
bool done = false;
while(!done)
{
for(int q = 0; q < numRows; ++q)
{
if(idx >= s.Length) { done = true; break; }
strings[q] += s[idx++];
}
if(!done)
{
for(int q = 0; q < numRows-2; ++q)
{
if(idx >= s.Length) { done = true; break; }
strings[numRows-2-q] += s[idx++];
}
}
}
string ret = "";
for(int q = 0; q < numRows; ++q)
ret += strings[q];
return ret;
}
조금 느리지만, 범위안의 결과.
'Leetcode > Top Interview 150' 카테고리의 다른 글
[Array/String][Hard] 68. Text Justification (0) | 2024.05.03 |
---|---|
[Array/String][Easy] 28. Find the Index of the First Occurrence in a String (0) | 2024.05.02 |
[Array/String][Easy] 14. Longest Common Prefix (0) | 2024.05.01 |
[Array/String][Easy] 58. Length of Last Word (0) | 2024.05.01 |
[Array/String][Medium] 12. Integer to Roman (0) | 2024.05.01 |