Skip to content

Commit b22ccb4

Browse files
solves zigzag conversion
1 parent c8a256f commit b22ccb4

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
| 2 | [Add Two Numbers](https://leetcode.com/problems/add-two-numbers) | [![Java](assets/java.png)](src/AddTwoNumbers.java) | |
1616
| 3 | [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters) | [![Java](assets/java.png)](src/LongestSubstringWithoutRepeatingCharacters.java) | |
1717
| 5 | [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring) | [![Java](assets/java.png)](src/LongestPalindromicSubstring.java) | |
18+
| 6 | [Zigzag Conversion](https://leetcode.com/problems/zigzag-conversion) | [![Java](assets/java.png)](src/ZigZagConversion.java) | |
1819
| 7 | [Reverse Integer](https://leetcode.com/problems/reverse-integer/) | [![Java](assets/java.png)](src/ReverseInteger.java) [![Python](assets/python.png)](python/reverse_integer.py) | [![java-yt](assets/java-yt.png)](https://youtu.be/7bOhyl5lWjI) [![python-yt](assets/python-yt.png)](https://youtu.be/lmLG30TLcSg) |
1920
| 9 | [PalindromeNumber](https://leetcode.com/problems/palindrome-number/) | [![Java](assets/java.png)](src/PalindromeNumber.java) [![Python](assets/python.png)](python/palindrome_number.py) | |
2021
| 13 | [Roman To Integer](https://leetcode.com/problems/roman-to-integer/) | [![Java](assets/java.png)](src/RomanToInteger.java) [![Python](assets/python.png)](python/roman_to_integer.py) | [![java-yt](assets/java-yt.png)](https://youtu.be/BCue_mO_81A) [![python-yt](assets/python-yt.png)](https://youtu.be/8h_yGTNvKMA) |

Diff for: src/ZigZagConversion.java

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// https://leetcode.com/problems/zigzag-conversion
2+
// T: O(|s|)
3+
// S: O(|s|)
4+
5+
public class ZigZagConversion {
6+
public static String convert(String s, int numRows) {
7+
if (numRows == 1) return s;
8+
final StringBuilder result = new StringBuilder();
9+
final int jumpSize = (numRows - 1) * 2;
10+
11+
// first row
12+
for (int i = 0 ; i < s.length() ; i += jumpSize) {
13+
result.append(s.charAt(i));
14+
}
15+
16+
for (int row = 1 ; row < numRows - 1 ; row++) {
17+
int[] jumps = {jumpSize - 2 * row, 2 * row};
18+
for (int i = row, k = 0 ; i < s.length() ; k ^= 1) {
19+
result.append(s.charAt(i));
20+
i += jumps[k];
21+
}
22+
}
23+
24+
// last row
25+
for (int i = numRows - 1 ; i < s.length() ; i += jumpSize) {
26+
result.append(s.charAt(i));
27+
}
28+
29+
return result.toString();
30+
}
31+
}

0 commit comments

Comments
 (0)