如何有效地生成2个字符的长字?

时间:2009-01-06 10:22:35

标签: c# string

我一直在想创建一个脚本,用我语言中给定的一组字符生成2个字符的单词。但是,由于我没有重新发明轮子,你知道C#公开可用的这样一个脚本吗?

2 个答案:

答案 0 :(得分:5)

我不确定我是否正确理解了你的问题,但这可能有所帮助:

List<string> GetWords(IEnumberable<char> characters) {
    char[] chars = characters.Distinct().ToArray();
    List<string> words = new List<string>(chars.Length*chars.Length);
    foreach (char i in chars)
       foreach (char j in chars)
          words.Add(i.ToString() + j.ToString());
    return words;
}

答案 1 :(得分:0)

您是在谈论找到可以从字符列表的任意组合中制作的真正的双字符单词吗?

在这种情况下,您需要编写一个算法,该算法可以从所提供的字母中找出所有可能的组合,并且针对每个组合,尝试(反过来)对象IDictionary,其作用类似于真正的两个字典。 - 字样。

未经测试的代码:

IDictionary<string, string> dictionary = GetRealTwoLetterWordDictionary();
char[] availableChars = new char[] { 'a', 's', 't' };
string[] combinations = GetAllCombinations(availableChars);
IList<string> results = new List<string>();

foreach (string combination in combinations)
{
    if (dictionary.ContainsKey(combination)))
    {
        results.Add(combination);
    }

    string reversed = combination.Reverse();

    if (dictionary.ContainsKey(reversed)))
    {
        results.Add(reversed);
    }
}