f**********2 发帖数: 2401 | 1 类似电话面板的一道题,输入是一个List digits, 一串数字,每个数字对应
可以翻译为3个character。翻译后的结果的pertutation是否可以组成一个单词,如果
可以,保存为结果集,输出。
Example:
2--> 'a','b','c'
8--> 't','u','c'
如果输入是228,
228 --> 'aat','abu',...
可以用2个函数
digits2char(int d)
isWord(String u)
输出是'aat','abu',...中所有的是单词的结果。
Set phoneWords(List digits){
}
自己有点紧张,题目不难,答得不太好,小毛病很多。供大家参考 | g*****g 发帖数: 212 | 2 确实不难,此题如果你定义一个数组,而不是各种if else
string[] mapping{"abc",...}
你的 code会简洁很多,也不容易犯错。 | x****g 发帖数: 1512 | 3 有啥特殊要求?
public static HashSet phoneWords(List digits)
{
HashSet words = new HashSet();
StringBuilder sb = new StringBuilder(digits.Count);
phoneWords(digits, 0, words, sb);
return words;
}
public static void phoneWords(List digits, int index, HashSet<
string> words, StringBuilder sb)
{
if (index == digits.Count)
{
string word = sb.ToString();
if (IsWord(word))
{
words.Add(word);
}
}
else
{
foreach (char ch in digits2char(digits[index]))
{
sb.Append(ch);
phoneWords(digits, index + 1, words, sb);
sb.Length--;
}
}
} | f**********2 发帖数: 2401 | 4 update:
没能通过,悲剧了。。。recruiter说了一些话还是挺安慰的,不过还是自己问题吧,
学艺不精。 |
|