Golang码,用于检查第一个字是否可以由第二个字组成

q35jwt9p  于 2023-02-06  发布在  Go
关注(0)|答案(1)|浏览(138)

我试了下面的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)

}
zbdgwd5y

zbdgwd5y1#

在Map中记录源字符串中每个符文的计数。对于目标字符串中的每个符文,如果Map中的计数为零,则失败。减少计数。
下面是代码:

// 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
}

相关问题