美文网首页LeetCode By Go
[LeetCode By Go 34]383. Ransom N

[LeetCode By Go 34]383. Ransom N

作者: miltonsun | 来源:发表于2017-08-21 11:24 被阅读2次

    题目

    Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.

    Each letter in the magazine string can only be used once in your ransom note.

    Note:
    You may assume that both strings contain only lowercase letters.

    canConstruct("a", "b") -> false
    canConstruct("aa", "ab") -> false
    canConstruct("aa", "aab") -> true

    解题思路

    把magazine上的字符串放进map中,值是字符出现的数量,然后循环遍历ransom上的字符,如果map中有则值减一,如果没有或者值为0则返回false

    代码

    ransomNote.go

    package _383_Ransom_Note
    
    
    func CanConstruct(ransomNote string, magazine string) bool {
        var magazineMap map[rune]int
        magazineMap = make(map[rune]int)
        magazineRune := []rune(magazine)
    
        for _, v := range magazineRune {
            magazineMap[v]++
        }
    
        ransomNoteRune := []rune(ransomNote)
        for _, letter := range ransomNoteRune {
            tmp, ok := magazineMap[letter]
            if !ok || tmp <= 0 {
                return false
            } else {
                magazineMap[letter]--
            }
        }
    
        return true
    }
    

    测试

    ransomNote_test.go

    package _383_Ransom_Note
    
    import "testing"
    
    func TestCanConstruct(t *testing.T) {
        var tests = []struct{
            a string
            b string
            output bool
        } {
            {"aa", "ab", false},
        }
    
        for _, test := range tests {
            ret := CanConstruct(test.a, test.b)
    
            if ret == test.output {
                t.Logf("pass")
            } else {
                t.Errorf("fail, want %+v, get %+v", test.output, ret)
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:[LeetCode By Go 34]383. Ransom N

        本文链接:https://www.haomeiwen.com/subject/wvjcdxtx.html