|
| 1 | +package Problem0126 |
| 2 | + |
| 3 | +import ( |
| 4 | + "fmt" |
| 5 | + "testing" |
| 6 | + |
| 7 | + "github.com/stretchr/testify/assert" |
| 8 | +) |
| 9 | + |
| 10 | +func Test_Problem0126(t *testing.T) { |
| 11 | + ast := assert.New(t) |
| 12 | + |
| 13 | + // tcs is testcase slice |
| 14 | + tcs := []struct { |
| 15 | + beginWord string |
| 16 | + endWord string |
| 17 | + wordList []string |
| 18 | + ans [][]string |
| 19 | + }{ |
| 20 | + |
| 21 | + { |
| 22 | + "qa", |
| 23 | + "sq", |
| 24 | + []string{"si", "go", "se", "cm", "so", "ph", "mt", "db", "mb", "sb", "kr", "ln", "tm", "le", "av", "sm", "ar", "ci", "ca", "br", "ti", "ba", "to", "ra", "fa", "yo", "ow", "sn", "ya", "cr", "po", "fe", "ho", "ma", "re", "or", "rn", "au", "ur", "rh", "sr", "tc", "lt", "lo", "as", "fr", "nb", "yb", "if", "pb", "ge", "th", "pm", "rb", "sh", "co", "ga", "li", "ha", "hz", "no", "bi", "di", "hi", "qa", "pi", "os", "uh", "wm", "an", "me", "mo", "na", "la", "st", "er", "sc", "ne", "mn", "mi", "am", "ex", "pt", "io", "be", "fm", "ta", "tb", "ni", "mr", "pa", "he", "lr", "sq", "ye"}, |
| 25 | + [][]string{ |
| 26 | + []string{"qa", "ba", "be", "se", "sq"}, |
| 27 | + []string{"qa", "ba", "bi", "si", "sq"}, |
| 28 | + []string{"qa", "ba", "br", "sr", "sq"}, |
| 29 | + []string{"qa", "ca", "cm", "sm", "sq"}, |
| 30 | + []string{"qa", "ca", "co", "so", "sq"}, |
| 31 | + []string{"qa", "la", "ln", "sn", "sq"}, |
| 32 | + []string{"qa", "la", "lt", "st", "sq"}, |
| 33 | + []string{"qa", "ma", "mb", "sb", "sq"}, |
| 34 | + []string{"qa", "pa", "ph", "sh", "sq"}, |
| 35 | + []string{"qa", "ta", "tc", "sc", "sq"}, |
| 36 | + []string{"qa", "fa", "fe", "se", "sq"}, |
| 37 | + []string{"qa", "ga", "ge", "se", "sq"}, |
| 38 | + []string{"qa", "ha", "he", "se", "sq"}, |
| 39 | + []string{"qa", "la", "le", "se", "sq"}, |
| 40 | + []string{"qa", "ma", "me", "se", "sq"}, |
| 41 | + []string{"qa", "na", "ne", "se", "sq"}, |
| 42 | + []string{"qa", "ra", "re", "se", "sq"}, |
| 43 | + []string{"qa", "ya", "ye", "se", "sq"}, |
| 44 | + []string{"qa", "ca", "ci", "si", "sq"}, |
| 45 | + []string{"qa", "ha", "hi", "si", "sq"}, |
| 46 | + []string{"qa", "la", "li", "si", "sq"}, |
| 47 | + []string{"qa", "ma", "mi", "si", "sq"}, |
| 48 | + []string{"qa", "na", "ni", "si", "sq"}, |
| 49 | + []string{"qa", "pa", "pi", "si", "sq"}, |
| 50 | + []string{"qa", "ta", "ti", "si", "sq"}, |
| 51 | + []string{"qa", "ca", "cr", "sr", "sq"}, |
| 52 | + []string{"qa", "fa", "fr", "sr", "sq"}, |
| 53 | + []string{"qa", "la", "lr", "sr", "sq"}, |
| 54 | + []string{"qa", "ma", "mr", "sr", "sq"}, |
| 55 | + []string{"qa", "fa", "fm", "sm", "sq"}, |
| 56 | + []string{"qa", "pa", "pm", "sm", "sq"}, |
| 57 | + []string{"qa", "ta", "tm", "sm", "sq"}, |
| 58 | + []string{"qa", "ga", "go", "so", "sq"}, |
| 59 | + []string{"qa", "ha", "ho", "so", "sq"}, |
| 60 | + []string{"qa", "la", "lo", "so", "sq"}, |
| 61 | + []string{"qa", "ma", "mo", "so", "sq"}, |
| 62 | + []string{"qa", "na", "no", "so", "sq"}, |
| 63 | + []string{"qa", "pa", "po", "so", "sq"}, |
| 64 | + []string{"qa", "ta", "to", "so", "sq"}, |
| 65 | + []string{"qa", "ya", "yo", "so", "sq"}, |
| 66 | + []string{"qa", "ma", "mn", "sn", "sq"}, |
| 67 | + []string{"qa", "ra", "rn", "sn", "sq"}, |
| 68 | + []string{"qa", "ma", "mt", "st", "sq"}, |
| 69 | + []string{"qa", "pa", "pt", "st", "sq"}, |
| 70 | + []string{"qa", "na", "nb", "sb", "sq"}, |
| 71 | + []string{"qa", "pa", "pb", "sb", "sq"}, |
| 72 | + []string{"qa", "ra", "rb", "sb", "sq"}, |
| 73 | + []string{"qa", "ta", "tb", "sb", "sq"}, |
| 74 | + []string{"qa", "ya", "yb", "sb", "sq"}, |
| 75 | + []string{"qa", "ra", "rh", "sh", "sq"}, |
| 76 | + []string{"qa", "ta", "th", "sh", "sq"}, |
| 77 | + }, |
| 78 | + }, |
| 79 | + |
| 80 | + { |
| 81 | + "hit", |
| 82 | + "cog", |
| 83 | + []string{"hot", "dot", "dog", "lot", "log"}, |
| 84 | + [][]string{}, |
| 85 | + }, |
| 86 | + |
| 87 | + { |
| 88 | + "hot", |
| 89 | + "dog", |
| 90 | + []string{"hot", "dog", "dot"}, |
| 91 | + [][]string{ |
| 92 | + []string{"hot", "dot", "dog"}, |
| 93 | + }, |
| 94 | + }, |
| 95 | + |
| 96 | + { |
| 97 | + "hit", |
| 98 | + "cog", |
| 99 | + []string{"hot", "dot", "dog", "lot", "log", "cog"}, |
| 100 | + [][]string{ |
| 101 | + []string{"hit", "hot", "dot", "dog", "cog"}, |
| 102 | + []string{"hit", "hot", "lot", "log", "cog"}, |
| 103 | + }, |
| 104 | + }, |
| 105 | + |
| 106 | + // 可以多个 testcase |
| 107 | + } |
| 108 | + |
| 109 | + for _, tc := range tcs { |
| 110 | + fmt.Printf("~~%v~~\n", tc) |
| 111 | + |
| 112 | + ast.Equal(tc.ans, findLadders(tc.beginWord, tc.endWord, tc.wordList), "输入:%v", tc) |
| 113 | + } |
| 114 | +} |
0 commit comments