LeetCode 17 电话号码的字母组合
先贴代码
class Solution {
List<String> result = new ArrayList<>();
String temp = new String("");
Integer num;
public List<String> letterCombinations(String digits) {
dfs(digits, 0);
return result;
}
public void dfs(String digits, int deepfloor) {
if(digits.compareTo("") == 0) {
return;
}
if(deepfloor == digits.length()) {
result.add(new String(temp));
return;
}
num = Integer.valueOf(digits.substring(deepfloor,deepfloor+1));
// num = Integer.valueOf(digits.charAt(deepfloor)); 这是错误写法
String sub = numberToString(num);
for(int j=0;j<sub.length();j++) {
temp = temp + sub.substring(j,j+1);
dfs(digits, deepfloor+1);
temp = temp.substring(0, deepfloor);
}
}
public String numberToString(int num) {
switch(num)
{
case 2:
return "abc";
case 3:
return "def";
case 4:
return "ghi";
case 5:
return "jkl";
case 6:
return "mno";
case 7:
return "pqrs";
case 8:
return "tuv";
case 9:
return "wxyz";
}
return "";
}
}
踩坑:
1、假设digits = "23",deepfloor = 0。
如果num = Integer.valueOf(digits.charAt(deepfloor));
num=50,这是为什么呢,因为digits.charAt(deepfloor)='2',对应的ASCII值为50...
而 num = Integer.valueOf(digits.substring(deepfloor,deepfloor+1));
num=2,才能得到正确结果,因为digits.substring(deepfloor,deepfloor+1)="2",Integer.valueOf()方法只能用于字符串,例如"2",而不能用于单个字符,例如'2'。
2、String temp = new String("");
是否""字符串会占据一个字符位置呢?
分别测试了当字符串temp为""的第0位字符
和拼接字符串"A"之后temp的第0位字符
首先当temp为""时, 测试System.out.println(temp.charAt(0));
会报错java.lang.StringIndexOutOfBoundsException: String index out of range: 0
因此,""其实不占据字符位
当temp拼接字符串"A"之后, 测试System.out.println(temp.charAt(0));
顺利输出字符'A'
因此也不用担心,通过拼接字符串,初始化"",会造成索引错乱的情况
但是,更好的办法应该是使用StringBuilder
如果是纯字符串拼接,会生成很多临时对象,性能会略差,Java实现中是用StringBuilder做拼接的。文章来源:https://www.toymoban.com/news/detail-732319.html
StringBuilder留到下一次实现。文章来源地址https://www.toymoban.com/news/detail-732319.html
class Solution {
List<String> result = new ArrayList<>();
String temp = new String("");
public List<String> letterCombinations(String digits) {
System.out.println(temp.charAt(0));
temp = temp + "A";
System.out.println(temp.charAt(0));
return result;
}
}
到了这里,关于Integer.valueOf()用于字符和字符串的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!