https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/submissions/
这道题目涉及到了字符String的相关操作,很久没回忆了,有点生疏,不过最后还是可以自己做出来了。需要注意以下几点:
- String的长度需要变化的时候,记得使用
StringBuilder 类,而不是Linkedlist<String> - 字符的
'1','2' 等数字转化为int的时候并不与int 的1,2 对应,需要减去'0' 来得到相对的数值,因为内部是以acsii 码的十进制数来存储的。
class Solution {
String[] letterMap = {
"",
"",
"abc",
"def",
"ghi",
"jkl",
"mno",
"pqrs",
"tuv",
"wxyz"
};
StringBuilder path = new StringBuilder();
List<String> result = new ArrayList<>();
public List<String> letterCombinations(String digits) {
traverse(digits, 0);
return result;
}
public void traverse(String digits, int index){
if(digits.length() == 0) return;
if(index == digits.length()){
result.add(path.toString());
return;
}
System.out.println("digits.charAt(index) : "+ digits.charAt(index));
for(int i = 0; i < letterMap[digits.charAt(index) - '0'].length(); i++){
path.append(letterMap[digits.charAt(index) - '0'].charAt(i));
traverse(digits, index + 1);
path.deleteCharAt(path.length()-1);
}
}
}
|