首页 > 后端开发 > Golang > Golang 代码检查第一个单词是否可以由第二个单词组成

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

WBOY
发布: 2024-02-10 23:40:18
转载
913 人浏览过

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
}
登录后复制

以上是Golang 代码检查第一个单词是否可以由第二个单词组成的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板