算法-电话号码的字母组合
生活随笔
收集整理的這篇文章主要介紹了
算法-电话号码的字母组合
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? ? ? ?給定一個僅包含數(shù)字 2-9 的字符串,返回所有它能表示的字母組合。
給出數(shù)字到字母的映射如下(與電話按鍵相同)。注意 1 不對應(yīng)任何字母。
?
示例: 輸入:"23" 輸出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].這道題利用了回溯的思想,由于是不存在不可行的情況,直接窮舉所有情況不需要剪枝操作。
package mainimport "fmt"var phoneMap map[string]string = map[string]string{"2": "abc","3": "def","4": "ghi","5": "jkl","6": "mno","7": "pqrs","8": "tuv","9": "wxyz", }var combinations []stringfunc letterCombinations(digits string) []string {if len(digits) == 0 {return []string{}}combinations = []string{}backtrack(digits, 0, "")return combinations }func backtrack(digits string, index int, combination string) {//tow is successif index == len(digits) {combinations = append(combinations, combination)} else {digit := string(digits[index])letters := phoneMap[digit]lettersCount := len(letters)for i := 0; i < lettersCount; i++ {backtrack(digits, index + 1, combination + string(letters[i]))}} }func main(){str := letterCombinations("23")for _,k :=range str{fmt.Println(k)} }很簡單,不多說
時間復(fù)雜度:O(3^m+4^n) ,m為有三個字母的數(shù)字個數(shù),n表示有四個字母的格式
空間復(fù)雜度:O(m+n)
?
?
參考地址:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/solution/dian-hua-hao-ma-de-zi-mu-zu-he-by-leetcode-solutio/
?
總結(jié)
以上是生活随笔為你收集整理的算法-电话号码的字母组合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法--删除链表的倒数第N个节点
- 下一篇: go语言的goconvey