string – 在golang中查找最长的单词
发布时间:2020-12-16 19:03:45 所属栏目:大数据 来源:网络整理
导读:尝试使用句子中的Go找到最长的单词. 目前我正在使用这种方法: func longestWord(s string) string { newArr := strings.Split(s," ") l := len(newArr[0]) long := newArr[0] var result string // fmt.Println(long) for _,lenString := range newArr { if
尝试使用句子中的Go找到最长的单词.
目前我正在使用这种方法: func longestWord(s string) string { newArr := strings.Split(s," ") l := len(newArr[0]) long := newArr[0] var result string // fmt.Println(long) for _,lenString := range newArr { if len(lenString) > l { // ll := len(lenString) // l := len(lenString) d := &l p := &long c := &result *d = len(lenString) *p = lenString *c = lenString // fmt.Println(lenString) } else { c := &result *c = newArr[0] } } return result } func main() { args := "Monday Tuesday Friday Sunday Wednesday" fmt.Println(longestWord(args)) } 但我不确定这是实现这一目标的最佳方法.还有其他优雅的方法吗?我知道使用sort还有一种方法,但我更喜欢使用单词之间的迭代方式.
“最佳”解决方案
我们甚至可以利用以下内容将其写成比其他答案更紧凑: >使用元组分配 我们失去了可读性: func longestWord(s string) string { best,length := "",0 for _,word := range strings.Split(s," ") { if len(word) > length { best,length = word,len(word) } } return best } 测试它: fmt.Printf("%qn",longestWord("")) args := "Monday Tuesday Friday Sunday Wednesday" fmt.Printf("%qn",longestWord(args)) 输出(在Go Playground上试试): "" "Wednesday" 最紧凑的解决方案 请注意,存储最佳长度是可选的,纯粹是为了优化目的,因为如果我们有最好的,它的长度总是len(最好). 利用这个,并且我们可以使用命名结果参数(并且所有变量都被初始化为其类型的zero value,除非提供初始值 – 对于字符串是“”),我们甚至可以将它写得更紧凑失去可读性: func longestWord(s string) (best string) { for _," ") { if len(word) > len(best) { best = word } } return } 测试和输出是相同的,在Go Playground上尝试.再次,在大多数情况下,与我们存储长度时相比,这可能稍微慢一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |