電話號碼的字母組合 leetcode17

2022-06-08 07:33:12 字數 1151 閱讀 4901

給定乙個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。答案可以按 任意順序 返回。

給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。

示例 1:

輸入:digits = "23"

輸出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

解析

首先使用雜湊表儲存每個數字對應的所有可能的字母,然後進行回溯操作。

回溯過程中維護乙個字串,表示已有的字母排列(如果未遍歷完**號碼的所有數字,則已有的字母排列是不完整的)。

該字串初始為空。

每次取**號碼的一位數字,從雜湊表中獲得該數字對應的所有可能的字母,

並將其中的乙個字母插入到已有的字母排列後面,然後繼續處理**號碼的後一位數字,直到處理完**號碼中的所有數字,即得到乙個完整的字母排列。

然後進行回退操作,遍歷其餘的字母排列。

回溯演算法用於尋找所有的可行解,如果發現乙個解不可行,則會捨棄不可行的解。

在這道題中,由於每個數字對應的每個字母都可能進入字母組合,因此不存在不可行的解,直接窮舉所有的解即可。

**如下

public

class

leetcode17

}public

static listlettercombinations(string digits)

//雜湊表儲存每個數字對應的所有可能的字母

mapphonemap = new hashmap()

};backtrack(combinations,phonemap,digits,0,new

stringbuffer());

return

combinations;

}//回溯函式

public

static

void

backtrack(listcombinations, mapphonemap, string digits, int

index, stringbuffer combination)

else}}

}

電話號碼的字母組合

給乙個數字字串,每個數字代表乙個字母,請返回其所有可能的字母組合。下圖的手機按鍵圖,就表示了每個數字可以代表的字母。樣例給定 23 返回 ad ae af bd be bf cd ce cf 注意以上的答案是按照詞典編撰順序進行輸出的,不過,在做本題時,你也可以任意選擇你喜歡的輸出順序。class ...

電話號碼的字母組合

給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映關係如下 示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 注 輸出字串順序任意 我的 public class lettercombinationsofaphonenumber public...

電話號碼的字母組合

這是一道我刷題時遇到的乙個題目,很簡單,輸入數字,輸出這些數字構成的字元排列組合 由可以看出。given a string containing digits from 2 9 inclusive,return all possible letter combinations that the nu...