在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中文網其他相關文章!