009_电话号码的字母组合

知识点:回溯

LeetCode第十七题:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/submissions/

语言:GoLang

// 回溯
var codeMap map[byte]string
func letterCombinations(digits string) []string {
    if len(digits) == 0 {
        return []string{}
    }

    codeMap = map[byte]string{
        '2': "abc",
        '3': "def",
        '4': "ghi",
        '5': "jkl",
        '6': "mno",
        '7': "pqrs",
        '8': "tuv",
        '9': "wxyz",
    }

    result := []string{}
    backtrack(digits, []rune{}, &result)
    return result
}

func backtrack(digits string, track []rune, result *[]string) {
    if len(digits) == 0 {
        *result = append(*result, string(track))
        return
    }

    for _, item := range codeMap[digits[0]] {
        track = append(track, item)
        backtrack(digits[1:], track, result)
        track = track[:len(track) - 1]
    }
}

posted @ 2020-03-06 19:34  Cenyol  阅读(89)  评论(0)    收藏  举报