diff --git a/src/0006/README.md b/src/0006/README.md new file mode 100644 index 0000000..9212add --- /dev/null +++ b/src/0006/README.md @@ -0,0 +1,47 @@ +# 0006. [Zigzag Conversion](https://leetcode.com/problems/zigzag-conversion/description/?envType=study-plan-v2&envId=top-interview-150) + +The string `"PAYPALISHIRING"` is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) + +

+P   A   H   N
+A P L S I I G
+Y   I   R
+
+ +And then read line by line: `"PAHNAPLSIIGYIR"` + +Write the code that will take a string and make this conversion given a number of rows: + +
string convert(string s, int numRows);
+ +### **Example 1:** + +

+Input: s = "PAYPALISHIRING", numRows = 3
+Output: "PAHNAPLSIIGYIR"
+
+ +### **Example 2:** + +

+Input: s = "PAYPALISHIRING", numRows = 4
+Output: "PINALSIGYAHRPI"
+Explanation:
+P     I    N
+A   L S  I G
+Y A   H R
+P     I
+
+ +### **Example 3:** + +

+Input: s = "A", numRows = 1
+Output: "A"
+
+ +### **Constraints:** + +- `1 <= s.length <= 1000` +- `s` consists of English letters (lower-case and upper-case), `','` and `'.'`. +- `1 <= numRows <= 1000` diff --git a/src/0006/index.test.ts b/src/0006/index.test.ts new file mode 100644 index 0000000..5c6eb5f --- /dev/null +++ b/src/0006/index.test.ts @@ -0,0 +1,40 @@ +import { convert } from '.'; + +describe('0006. Zigzag Conversion', () => { + interface TestCase { + input: { + s: string; + numRows: number; + }; + expected: string; + } + + const testCases: TestCase[] = [ + { + input: { + s: 'PAYPALISHIRING', + numRows: 3, + }, + expected: 'PAHNAPLSIIGYIR', + }, + { + input: { + s: 'PAYPALISHIRING', + numRows: 4, + }, + expected: 'PINALSIGYAHRPI', + }, + { + input: { + s: 'A', + numRows: 1, + }, + expected: 'A', + }, + ]; + + test.each(testCases)('Case %#', ({ input: { s, numRows }, expected }) => { + const result = convert(s, numRows); + expect(result).toBe(expected); + }); +}); diff --git a/src/0006/index.ts b/src/0006/index.ts new file mode 100644 index 0000000..452f3e2 --- /dev/null +++ b/src/0006/index.ts @@ -0,0 +1,3 @@ +function convert(s: string, numRows: number): string {} + +export { convert };