Leetcode Note: Go - Ransom Note

Ransom Note - LeetCode
https://leetcode.com/problems/ransom-note/

  • Go 言語で取り組んだメモ

所感

  • magazine string に ransomNote string が含まれていれば true を return する

回答

シンプルに実装するならこれで十分?

func canConstruct(ransomNote string, magazine string) bool {
    return strings.Contains(magazine, ransomNote)
}

=> wrong answer. input が “aab”, “baa” の場合は true が return されるべき

完全一致じゃなくて OK なので、文字単位での出現判定が必要だった


Go pretty simple code - LeetCode Discuss
https://leetcode.com/problems/ransom-note/discuss/1947575/Go-pretty-simple-code

func canConstruct(ransomNote string, magazine string) bool {
	for _, v := range ransomNote {
		if strings.Count(ransomNote, string(v)) > strings.Count(magazine, string(v)) {
			return false
		}
	}
	return true
}
  • for ループで ransomNote を range で扱う
    • 各文字 v が magazine に含まれる数より多ければ return false