leetcode17。電話番号golang実装の文字の組み合わせ



Leetcode 17 Letter Combination Phone Number Golang Implementation



説明
Given a string containing only numbers 2-9, return all the letter combinations it can represent. The mapping from numbers to letters is given below (same as phone keys). Note 1 does not correspond to any letter. Enter: '23' Output: ['ad', 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'ce', 'cf']
アイデア
Each time the slice ret is saved, it is a combination of strings after traversing a number Take '23 as an example' The value in ret is Before looping: [''] After '2': [a, b, c] After '3': [ad, ae, af, bd, be, bf, cd, ce, cf]
成し遂げる
func letterCombinations(digits string) []string { ret := make([]string, 0) if digits == ''{ return ret } digit2LetterList := map[string][]string{ '2': {'a', 'b', 'c'}, '3': {'d', 'e', 'f'}, '4': {'g', 'h', 'i'}, '5': {'j', 'k', 'l'}, '6': {'m', 'n', 'o'}, '7': {'p', 'q', 'r', 's'}, '8': {'t', 'u', 'v'}, '9': {'w', 'x', 'y', 'z'}, } ret = append(ret, '') for i := 0 i < len(digits) i++ { retLen := len(ret) digit := digits[i : i+1] letterList := digit2LetterList[digit] for j := 0 j < retLen j++ { for _, letter := range letterList { ret = append(ret, ret[0]+letter) } ret = ret[1:] } } return ret }