加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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还有一种方法,但我更喜欢使用单词之间的迭代方式.

“最佳”解决方案

我们甚至可以利用以下内容将其写成比其他答案更紧凑:

>使用元组分配
>使用零值(“”和0)初始化最佳值和长度,并省略检查0个字符作为范围正确处理
>不需要将单词存储为局部变量,因为它仅在循环中使用

我们失去了可读性:

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上尝试.再次,在大多数情况下,与我们存储长度时相比,这可能稍微慢一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读