首頁 > 後端開發 > Golang > Golang 程式碼檢查第一個單字是否可以由第二個單字組成

Golang 程式碼檢查第一個單字是否可以由第二個單字組成

WBOY
發布: 2024-02-10 23:40:18
轉載
918 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板