卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章35306本站已运行395

Golang 代码检查第一个单词是否可以由第二个单词组成

golang 代码检查第一个单词是否可以由第二个单词组成

在Golang中,我们常常需要检查一个单词是否可以由另一个单词中的字符组成。这个功能在很多情况下都很有用,比如判断一个字符串是否是另一个字符串的字母重排。在本文中,php小编新一将为大家介绍一种简洁高效的方法来实现这个功能。通过这个方法,我们可以轻松地判断一个单词是否可以由另一个单词中的字符组成,从而提高我们的代码效率。让我们一起来看看具体的实现方法吧!

问题内容

我尝试了下面的 golang 代码来检查第一个字符串是否可以由第二个字符串组成。这段代码有什么可以改进的地方吗?

package main
import (
    "fmt"
    "strings"
)

func main() {

    words := []string{"hello", "ellhoo"}

    result := "NO"

    s := words[0]
    for i := 0; i < len(words[0]); i++ {
        if strings.Contains(words[1], string(s[i])) == false {
            result = "NO"
            break
        } else {
            result = "YES"
            words[1] = strings.Replace(words[1],string(s[i]),"",1)
        }
    }
    fmt.Println(result)

}

解决方法

记录地图中源字符串中每个符文的计数。对于目标字符串中的每个符文,如果地图中的计数为零,则失败。递减计数。

代码如下:

// canmake reports whether t can constructed from the runes in s.
func canmake(t, s string) bool {
    m := map[rune]int{}
    for _, r := range s {
        m[r]++
    }
    for _, r := range t {
        if m[r] == 0 {
            return false
        }
        m[r]--
    }
    return true
}

以下示例展示了如何使用它:

func main() {
    fmt.Println(canmake("hello", "ellhoo"))
    fmt.Println(canmake("hello", "elhoo")) // insufficent number of l
    fmt.Println(canmake("hello", "elloo")) // mising h
}
卓越飞翔博客
上一篇: 创建 webhook 以连接到 Google 云功能中的 OpenAI
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏