LeetCode 문제 풀이 day 017 (Jieky)
/*
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
2 abc
3 def
4 ghi
5 jkl
6 mno
7 pqrs
8 tuv
9 wxyz
Example:
Input: "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
*/
import java.util.*;
public class LetterCombinationsPhoneNumber{
public static void main(String[] args){
String str = "23";
LetterCombinationsPhoneNumber lcpn = new LetterCombinationsPhoneNumber();
List<String> result = lcpn.letterCombinations03(str);
System.out.println(result);
}
// , add List
public List<String> letterCombinations03(String digits) {
// Given a string containing digits from 2-9 inclusive
// LinkedList,
List<String> ret = new ArrayList<>();
if (digits == null || digits.length() == 0) return ret;
String[] strs = {
"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
// , ""
combination(ret,digits,strs,0,"");
return ret;
}
private void combination(List<String> ret,String digits,String[] strs,int index,String prefix){
//
if(index == digits.length()){
// , , List
ret.add(prefix);
return;
}
// String temp = strs[Integer.parseInt(digits.substring(index,index+1)) - 2];
String temp = strs[Character.getNumericValue(digits.charAt(index)) - 2];
//
for (int i=0;i<temp.length();i++){
combination(ret,digits,strs,index+1,prefix+temp.substring(i,i+1));
}
}
// ,
public List<String> letterCombinations02(String digits) {
// Given a string containing digits from 2-9 inclusive
// LinkedList,
LinkedList<String> ret = new LinkedList<>();
if (digits == null || digits.length() == 0) return ret;
String[] strs = {
"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
// for ,
ret.add("");
for (int i=0;i<digits.length();i++){
// Integer.parseInt ,
// Character.getNumericValue
String temp = strs[Character.getNumericValue(digits.charAt(i)) - 2];
// LinkedList 。ret.add("") ret 1, if 。
int len = ret.size();
for (int j = 0;j < len;j++){
//
String getStr = ret.removeFirst();
for (int k=0;k<temp.length();k++){
//
ret.addLast(getStr+temp.substring(k,k+1));
}
}
}
return ret;
}
public List<String> letterCombinations01(String digits) {
// Given a string containing digits from 2-9 inclusive
List<String> ret = new ArrayList<>();
if (digits == null || digits.length() == 0) return ret;
String[] strs = {
"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
for (int i=0;i<digits.length();i++){
// Integer.parseInt ,
String temp = strs[Integer.parseInt(digits.substring(i,i+1)) - 2];
if (ret.size() > 0){
// ret ,
List<String> ret_temp = new ArrayList<>();
for (String p:ret){
for (int j=0;j<temp.length();j++){
ret_temp.add(p+temp.substring(j,j+1));
}
}
// List
ret = ret_temp;
}else{
// ret
for (int j=0;j<temp.length();j++){
ret.add(temp.substring(j,j+1));
}
}
}
return ret;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.