一、题目
二、代码
class Solution
{
List<String> re_list = new LinkedList<>();
StringBuilder str = new StringBuilder();
String str_2 = "abc";
String str_3 = "def";
String str_4 = "ghi";
String str_5 = "jkl";
String str_6 = "mno";
String str_7 = "pqrs";
String str_8 = "tuv";
String str_9 = "wxyz";
public void back(String digits,int start)
{
int length;
length = str.length();
if(length>digits.length()) return ;
if(length == digits.length())
{
// System.out.println("满足");
// System.out.println("字符串 "+str.toString());
// re_list.add(new String(str.toString()));
re_list.add(str.toString());
}
int i;
int j;
length = digits.length();
// System.out.println("length "+length);
// System.out.println("start "+start);
for(i=start;i<length;i++)
{
if(digits.charAt(i)=='2')
{
int length_str = str_2.length();
for(j=0;j<length_str;j++)
{
str.append(str_2.charAt(j));
back(digits,i+1);
str.deleteCharAt(str.length()-1);
}
}
else if(digits.charAt(i)=='3')
{
int length_str = str_3.length();
for(j=0;j<length_str;j++)
{
str.append(str_3.charAt(j));
back(digits,i+1);
str.deleteCharAt(str.length()-1);
}
}
else if(digits.charAt(i)=='4')
{
int length_str = str_4.length();
for(j=0;j<length_str;j++)
{
str.append(str_4.charAt(j));
back(digits,i+1);
str.deleteCharAt(str.length()-1);
}
}
else if(digits.charAt(i)=='5')
{
int length_str = str_5.length();
for(j=0;j<length_str;j++)
{
str.append(str_5.charAt(j));
back(digits,i+1);
str.deleteCharAt(str.length()-1);
}
}
else if(digits.charAt(i)=='6')
{
int length_str = str_6.length();
for(j=0;j<length_str;j++)
{
str.append(str_6.charAt(j));
back(digits,i+1);
str.deleteCharAt(str.length()-1);
}
}
else if(digits.charAt(i)=='7')
{
int length_str = str_7.length();
for(j=0;j<length_str;j++)
{
str.append(str_7.charAt(j));
back(digits,i+1);
str.deleteCharAt(str.length()-1);
}
}
else if(digits.charAt(i)=='8')
{
int length_str = str_8.length();
for(j=0;j<length_str;j++)
{
str.append(str_8.charAt(j));
back(digits,i+1);
str.deleteCharAt(str.length()-1);
}
}
else if(digits.charAt(i)=='9')
{
int length_str = str_9.length();
for(j=0;j<length_str;j++)
{
str.append(str_9.charAt(j));
back(digits,i+1);
str.deleteCharAt(str.length()-1);
}
}
}
}
public List<String> letterCombinations(String digits)
{
if(digits.length()==0) return re_list;
back(digits ,0);
return re_list;
}
}
三、运行结果
四、附录
二刷
class Solution
{
List<String> re = new LinkedList<>();
StringBuffer path = new StringBuffer();
String ch_2 = "abc";
String ch_3 = "def";
String ch_4 = "ghi";
String ch_5 = "jkl";
String ch_6 = "mno";
String ch_7 = "pqrs";
String ch_8 = "tuv";
String ch_9 = "wxyz";
public void track(String digits,int start)
{
int i,j;
int length = digits.length();
if(path.length()==digits.length()) re.add(path.toString());
if(path.length()>digits.length()) return;
int length_temp;
for(i=start;i<length;i++)
{
char temp = digits.charAt(i);
if(temp=='2')
{
length_temp = ch_2.length();
for(j=0;j<length_temp;j++)
{
path.append(ch_2.charAt(j));
track(digits,i+1);
path.deleteCharAt(path.length()-1);
}
}
else if(temp=='3')
{
length_temp = ch_3.length();
for(j=0;j<length_temp;j++)
{
path.append(ch_3.charAt(j));
track(digits,i+1);
path.deleteCharAt(path.length()-1);
}
}
else if(temp=='4')
{
length_temp = ch_4.length();
for(j=0;j<length_temp;j++)
{
path.append(ch_4.charAt(j));
track(digits,i+1);
path.deleteCharAt(path.length()-1);
}
}
else if(temp=='5')
{
length_temp = ch_5.length();
for(j=0;j<length_temp;j++)
{
path.append(ch_5.charAt(j));
track(digits,i+1);
path.deleteCharAt(path.length()-1);
}
}
else if(temp=='6')
{
length_temp = ch_6.length();
for(j=0;j<length_temp;j++)
{
path.append(ch_6.charAt(j));
track(digits,i+1);
path.deleteCharAt(path.length()-1);
}
}
else if(temp=='7')
{
length_temp = ch_7.length();
for(j=0;j<length_temp;j++)
{
path.append(ch_7.charAt(j));
track(digits,i+1);
path.deleteCharAt(path.length()-1);
}
}
else if(temp=='8')
{
length_temp = ch_8.length();
for(j=0;j<length_temp;j++)
{
path.append(ch_8.charAt(j));
track(digits,i+1);
path.deleteCharAt(path.length()-1);
}
}
else if(temp=='9')
{
length_temp = ch_9.length();
for(j=0;j<length_temp;j++)
{
path.append(ch_9.charAt(j));
track(digits,i+1);
path.deleteCharAt(path.length()-1);
}
}
}
}
public List<String> letterCombinations(String digits)
{
if(digits.length() == 0) return re;
track(digits,0);
return re;
}
}