@@ -51,8 +51,9 @@ https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
5151
5252## 代码
5353
54- - 语言支持:JS
54+ - 语言支持:JS, C++, Java, Python
5555
56+ JavaScript Code:
5657``` js
5758/**
5859 * @param {string} digits
@@ -89,6 +90,119 @@ const letterCombinations = function (digits) {
8990};
9091```
9192
93+
94+ C++ Code:
95+ ``` c++
96+ class Solution {
97+ public:
98+ string letterMap[ 10] = {" "," ","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
99+ vector<string > res;
100+ vector<string > letterCombinations(string digits) {
101+ if(digits == "")
102+ {
103+ return res;
104+ }
105+ dfs(digits, 0, "");
106+ return res;
107+ }
108+
109+ void dfs(string digits, int index, string s)
110+ {
111+ if(index == digits.length())
112+ {
113+ res.push_back(s);
114+ return;
115+ }
116+ // 获取当前数字
117+ char c = digits[index];
118+ // 获取数字对应字母
119+ string letters = letterMap[c-' 0' ];
120+ for (int i = 0 ; i < letters.length() ; i ++)
121+ {
122+ dfs (digits, index+1, s+letters[ i] );
123+ }
124+ }
125+ }
126+ ```
127+
128+ Java Code:
129+ ``` java
130+ class Solution {
131+
132+ private String letterMap[] = {
133+ " " , // 0
134+ " " , // 1
135+ " abc" , // 2
136+ " def" , // 3
137+ " ghi" , // 4
138+ " jkl" , // 5
139+ " mno" , // 6
140+ " pqrs" , // 7
141+ " tuv" , // 8
142+ " wxyz" // 9
143+ };
144+ private ArrayList<String > res;
145+ public List<String > letterCombinations (String digits ) {
146+ res = new ArrayList<String > ();
147+ if (digits. equals(" " ))
148+ {
149+ return res;
150+ }
151+ dfs(digits, 0 , " " );
152+ return res;
153+ }
154+
155+ public void dfs (String digits , int index , String s )
156+ {
157+ if (index == digits. length())
158+ {
159+ res. add(s);
160+ return ;
161+ }
162+ // 获取当前数字
163+ Character c = digits. charAt(index);
164+ // 获取数字对应字母
165+ String letters = letterMap[c- ' 0' ];
166+ for (int i = 0 ; i < letters. length() ; i ++ )
167+ {
168+ dfs(digits, index+ 1 , s+ letters. charAt(i));
169+ }
170+ }
171+ }
172+ ```
173+
174+ Python Code:
175+ ``` py
176+ class Solution (object ):
177+ def letterCombinations (self , digits ):
178+ """
179+ :type digits: str
180+ :rtype: List[str]
181+ """
182+ if not digits:
183+ return []
184+ # 0-9
185+ self .d = [" " ," " ," abc" ," def" ," ghi" ," jkl" ," mno" ," pqrs" ," tuv" ," wxyz" ]
186+ self .res = []
187+ self .dfs(digits, 0 , " " )
188+ return self .res
189+
190+ def dfs (self , digits , index , s ):
191+ # 递归的终止条件,用index记录每次遍历到字符串的位置
192+ if index == len (digits):
193+ self .res.append(s)
194+ return
195+ # 获取当前数字
196+ c = digits[index]
197+ # print(c, int(c))
198+ # 获取数字对应字母
199+ letters = self .d[int (c)]
200+ # 遍历字符串
201+ for l in letters:
202+ # 调用下一层
203+ self .dfs(digits, index+ 1 , s+ l)
204+ ```
205+
92206** 复杂度分析**
93207
94208N + M 是输入数字的总数
0 commit comments