zvvq技术分享网

查找字符串中的所有回文(查找字符串中指定字

作者:zvvq博客网
导读对于这篇文章,我们将以本系列之前的 2 篇文章为基础。 编写一个 golang 函数,查找字符串中的所有回文。 我将其解释为“从给定的字符串中,找到其中所有回文字符串” 在上一篇文

zvvq好,好zvvq

对于这篇文章,我们将以本系列之前的 2 篇文章为基础。 本文来自zvvq

编写一个 golang 函数,查找字符串中的所有回文。 本文来自zvvq

我将其解释为“从给定的字符串中,找到其中所有回文字符串” 内容来自zvvq

在上一篇文章中,我们创建了一个函数来查找给定字符串中的所有唯一字符串。

内容来自samhan666

在上一篇文章中,我们创建了一个函数来检查字符串是否是回文。

内容来自zvvq

将这两个结合起来,我们可以找到字符串中所有可能的回文。 zvvq

1 内容来自zvvq,别采集哟

2

zvvq好,好zvvq

3 内容来自zvvq

4

内容来自samhan666

5 zvvq

6 内容来自zvvq

7 内容来自samhan666

8

内容来自zvvq

9 copyright zvvq

10 内容来自zvvq,别采集哟

func FindAllPalindromes(str string) []string { 内容来自zvvq

所有回文 := []string{}

内容来自zvvq

uniqueStrings := uniquecombos.FindUniqueCombinations(str)

内容来自samhan

for _, uniqueString := 范围 uniqueStrings { 内容来自samhan666

if palindromecheck.P​​alindromeCheck(uniqueString) { 本文来自zvvq

allPalindromes = 追加(allPalindromes, uniqueString)

zvvq好,好zvvq

}

内容来自zvvq

} zvvq.cn

返回所有回文

zvvq

} 内容来自samhan

事实证明,单元测试有一个值得注意的曲线球。 copyright zvvq

FindAllPalindromes 函数按照找到回文的顺序构建结果数组。这可能是也可能不是单元测试中“预期”结果的顺序。 zvvq.cn

例如,字符串“aba”有 4 个回文:“a”、“aa”、“aba”和“b”。但是,FindAllPalindromes 返回 a、aba、aa 和 b。

我们这里有多种选择:

内容来自samhan666

编写一个比较两个数组而不考虑顺序的函数,即两个数组具有相同的元素和长度。

zvvq好,好zvvq

对预期数组和结果数组进行排序,然后比较

zvvq

为了简单起见,我选择了第二个选项,但以预先排序的形式构建了测试用例的预期结果,以节省测试运行的时间。

内容来自zvvq,别采集哟

1 zvvq好,好zvvq

2

内容来自samhan666

3

本文来自zvvq

4 zvvq好,好zvvq

5 内容来自samhan

6

内容来自zvvq

7 内容来自zvvq

8

zvvq

9 zvvq

10

copyright zvvq

11

copyright zvvq

12 zvvq好,好zvvq

13

zvvq.cn

14 zvvq好,好zvvq

15 zvvq好,好zvvq

16 zvvq.cn

17

zvvq

18

本文来自zvvq

19

内容来自zvvq

20 内容来自samhan

21

内容来自samhan666

22

zvvq.cn

23

zvvq好,好zvvq

func TestFindAllPalindromes(t testing.T) {

内容来自zvvq

测试用例 := []struct {

内容来自samhan666

输入字符串 zvvq.cn

预期 [] 字符串

copyright zvvq

}{

copyright zvvq

// 请注意,预期数组已经过预排序,以便更快地运行测试

zvvq好,好zvvq

{““, []细绳{}}, 本文来自zvvq

{“a”,[]字符串{“a”}}, zvvq

{"ab", []字符串{"a", "b"}}, 内容来自samhan666

{"aba", []string{"a", "aa", "aba", "b"}}, 内容来自zvvq

{"aab", []字符串{"a", "aa", "b"}}, zvvq.cn

{“abcba”,[]字符串{“a”,“aa”,“aba”,“abba”,“abcba”,“aca”,“b”,“bb”,“bcb”,“c”}} ,

zvvq好,好zvvq

}

zvvq

for _, tc := 范围测试用例 {

内容来自samhan

结果 := FindAllPalindromes(tc.input) zvvq

// 对结果进行排序以匹配预期顺序 zvvq.cn

切片.排序(结果) 内容来自zvvq

if !reflect.DeepEqual(结果, tc.expected) {

zvvq.cn

t.Errorf("findUniqueCombinations(%q) = %v; 预期 %v", tc.input, 结果, tc.expected)

zvvq.cn

} copyright zvvq

}

内容来自samhan666

} zvvq好,好zvvq

我们怎样才能做得更好? zvvq好,好zvvq

在评论中发表你的想法。 zvvq.cn

谢谢! 内容来自zvvq,别采集哟

这篇文章以及本系列所有文章的代码可以在这里找到

内容来自samhan

以上就是查找字符串中的所有回文的详细内容,更多请关注其它相关文章! zvvq.cn