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