Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add 17_Letter_Combinations_of_a_Phone_Number.java
  • Loading branch information
BHwi committed Sep 23, 2022
commit 8d18c00eeca1fd940e51f2113aa63e03d74b74ef
40 changes: 40 additions & 0 deletions java/17_Letter_Combinations_of_a_Phone_Number.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
class Solution {
// make list for return.
public ArrayList<String> list = new ArrayList<>();
// make array for get phone number's characters.
public char[][] arr = {
{'0', '0', '0', '-'},
{'0', '0', '0', '-'},
{'a', 'b', 'c', '-'},
{'d', 'e', 'f', '-'},
{'g', 'h', 'i', '-'},
{'j', 'k', 'l', '-'},
{'m', 'n', 'o', '-'},
{'p', 'q', 'r', 's'},
{'t', 'u', 'v', '-'},
{'w', 'x', 'y', 'z'},
};

// main function
public List<String> letterCombinations(String digits) {
addString(digits, 0, "");
return list;
}

// axiom : if input == "", return []
// if index == digits.length(), add str in list
// else do loop number's character, and function recursion.
public void addString(String digits, int index, String str) {
if(digits.equals("")) return;
if(index == digits.length()) {
list.add(str);
}
else {
for(int i = 0; i < 4; i++) {
int number = Integer.parseInt(digits.charAt(index) + "");
if(arr[number][i] == '-') continue;
addString(digits, index + 1, str + arr[number][i]);
}
}
}
}