大威天龙(打印字符串所对应的字符所有排列组合)
打印字符串所对应的字符所有排列组合
将数字与对应的字符数组写进字典里,这里使用广度优先遍历BFS,那就得用队列,之后用个列表去接这些组合,list是动态的,不会被限制长度,队列储存string类型
大威天龙
public class PhoneNumber
{
//大威天龙
public static List<string> Fahai(string digits)
{
Dictionary<char,char[]> dict=new Dictionary<char, char[]>()
{
{'2',new char[]{'a','b','c'}},
{'3',new char[]{'d','e','f'}},
{'4',new char[]{'g','h','i'}},
{'5',new char[]{'j','k','l'}},
{'6',new char[]{'m','n','o'}},
{'7',new char[]{'p','q','r','s'}},
{'8',new char[]{'t','u','v'}},
{'9',new char[]{'w','x','y','z'}}
};
var result=new List<string>();
if(string.IsNullOrEmpty(digits)) return result;
var q=new Queue<String>();
q.Enqueue(string.Empty);
while(q.Count>0)
{
var cur=q.Dequeue();
if(cur.Length==digits.Length)
{
result.Add(cur);
}
else
{
foreach (var c in dict[digits[cur.Length]])
{
q.Enqueue(cur+c);
}
}
}
return result;
}
}
主方法体
string phoneNumber="45689";
var result=PhoneNumber.Fahai(phoneNumber);
File.WriteAllLines(@"E:\study\study.txt",result);
除开用字典来索引,也可以使用数组来存储
数组方法
public class NewPhoneNumber
{
public static List<string> Fahai(string digits)
{
string[] str=new string[]{null,null,"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
var result=new List<string>();
if(digits==null) return result;
Queue<string> q=new Queue<string>();
q.Enqueue(string.Empty);
while(q.Count>0)
{
var c=q.Dequeue();
if(c.Length==digits.Length)
{
result.Add(c);
}
else
{
foreach (var v in str[digits[c.Length]-'0'])
{
q.Enqueue(c+v);
}
}
}
return result;
}
}

浙公网安备 33010602011771号