From a3d339700ae44bbacd50ed3d9e555ffa663ea313 Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Wed, 26 Feb 2025 09:21:18 +0800 Subject: [PATCH] Add solution and test-cases for problem 1138 --- .../1101-1200/1138.Alphabet-Board-Path/1.png | Bin 0 -> 18720 bytes .../1138.Alphabet-Board-Path/README.md | 37 ++++++---- .../1138.Alphabet-Board-Path/Solution.go | 67 +++++++++++++++++- .../1138.Alphabet-Board-Path/Solution_test.go | 13 ++-- 4 files changed, 94 insertions(+), 23 deletions(-) create mode 100644 leetcode/1101-1200/1138.Alphabet-Board-Path/1.png diff --git a/leetcode/1101-1200/1138.Alphabet-Board-Path/1.png b/leetcode/1101-1200/1138.Alphabet-Board-Path/1.png new file mode 100644 index 0000000000000000000000000000000000000000..db370622ed22af5448b72829ad90715d6dca6373 GIT binary patch literal 18720 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 [!WARNING|style:flat] -> This question is temporarily unanswered if you have good ideas. Welcome to [Create Pull Request PR](https://github.com/kylesliu/awesome-golang-algorithm) - ## Description +On an alphabet board, we start at position `(0, 0)`, corresponding to character `board[0][0]`. + +Here, `board = ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"]`, as shown in the diagram below. + +![1](./1.png) + +We may make the following moves: + +- `'U'` moves our position up one row, if the position exists on the board; +- `'D'` moves our position down one row, if the position exists on the board; +- `'L'` moves our position left one column, if the position exists on the board; +- `'R'` moves our position right one column, if the position exists on the board; +- `'!'` adds the character `board[r][c]` at our current position `(r, c)` to the answer. + +(Here, the only positions that exist on the board are positions with letters on them.) + +Return a sequence of moves that makes our answer equal to `target` in the minimum number of moves. You may return any path that does so. **Example 1:** ``` -Input: a = "11", b = "1" -Output: "100" +Input: target = "leet" +Output: "DDR!UURRR!!DDD!" ``` -## 题意 -> ... - -## 题解 +**Example 2:** -### 思路1 -> ... -Alphabet Board Path -```go ``` - +Input: target = "code" +Output: "RR!DDRR!UUL!R!" +``` ## 结语 diff --git a/leetcode/1101-1200/1138.Alphabet-Board-Path/Solution.go b/leetcode/1101-1200/1138.Alphabet-Board-Path/Solution.go index d115ccf5e..f63db5a9e 100644 --- a/leetcode/1101-1200/1138.Alphabet-Board-Path/Solution.go +++ b/leetcode/1101-1200/1138.Alphabet-Board-Path/Solution.go @@ -1,5 +1,68 @@ package Solution -func Solution(x bool) bool { - return x +import "strings" + +func Solution(target string) string { + pos := [26][2]int{ + {0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, + {1, 0}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, + {2, 0}, {2, 1}, {2, 2}, {2, 3}, {2, 4}, + {3, 0}, {3, 1}, {3, 2}, {3, 3}, {3, 4}, + {4, 0}, {4, 1}, {4, 2}, {4, 3}, {4, 4}, + {5, 0}, + } + buf := strings.Builder{} + x, y := 0, 0 + for _, b := range target { + bp := pos[b-'a'] + if bp[0] == x && bp[1] == y { + buf.WriteByte('!') + continue + } + dx, dy := bp[0]-x, bp[1]-y + sx, sy := x, y + x, y = bp[0], bp[1] + if sx == 5 && sy == 0 { + if dx < 0 { + for ; dx < 0; dx++ { + buf.WriteByte('U') + } + } else { + for ; dx > 0; dx-- { + buf.WriteByte('D') + } + } + if dy < 0 { + for ; dy < 0; dy++ { + buf.WriteByte('L') + } + } else { + for ; dy > 0; dy-- { + buf.WriteByte('R') + } + } + buf.WriteByte('!') + continue + } + if dy < 0 { + for ; dy < 0; dy++ { + buf.WriteByte('L') + } + } else { + for ; dy > 0; dy-- { + buf.WriteByte('R') + } + } + if dx < 0 { + for ; dx < 0; dx++ { + buf.WriteByte('U') + } + } else { + for ; dx > 0; dx-- { + buf.WriteByte('D') + } + } + buf.WriteByte('!') + } + return buf.String() } diff --git a/leetcode/1101-1200/1138.Alphabet-Board-Path/Solution_test.go b/leetcode/1101-1200/1138.Alphabet-Board-Path/Solution_test.go index 14ff50eb4..3027be314 100644 --- a/leetcode/1101-1200/1138.Alphabet-Board-Path/Solution_test.go +++ b/leetcode/1101-1200/1138.Alphabet-Board-Path/Solution_test.go @@ -10,12 +10,11 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + inputs string + expect string }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", "leet", "RDD!RRRUU!!DDD!"}, + {"TestCase2", "code", "RR!RRDD!LUU!R!"}, } // 开始测试 @@ -30,10 +29,10 @@ func TestSolution(t *testing.T) { } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }