返回顶部

收藏

C#查找字符串的所有排列组合

更多
// 1. remove first char 
// 2. find permutations of the rest of chars
// 3. Attach the first char to each of those permutations.
//     3.1  for each permutation, move firstChar in all indexes to produce even more permutations.
// 4. Return list of possible permutations.
public string[] FindPermutations(string word)
{
    if (word.Length == 2)
    {
        char[] _c = word.ToCharArray();
        string s = new string(new char[] { _c[1], _c[0] });
        return new string[]
        {
            word,
            s
        };
    }

    List<string> _result = new List<string>();

    string[] _subsetPermutations = FindPermutations(word.Substring(1));
    char _firstChar = word[0];
    foreach (string s in _subsetPermutations)
    {
        string _temp = _firstChar.ToString() + s;
        _result.Add(_temp);
        char[] _chars = _temp.ToCharArray();
        for (int i = 0; i < _temp.Length - 1; i++)
        {
            char t = _chars[i];
            _chars[i] = _chars[i + 1];
            _chars[i + 1] = t;
            string s2 = new string(_chars);
            _result.Add(s2);
        }
    }
    return _result.ToArray();
}
//该片段来自于http://outofmemory.cn

标签:c#,.net,算法

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. IT路人 发表 2013-07-05 05:00:00 利用C# .net在WP8里面异步加载任务
  2. itcodes 发表 2014-07-22 17:00:00 C#计算时间差。
  3. 姚 广远 发表 2015-04-14 06:17:41 C# 语言规范 —类型、变量和值
  4. K-Res 发表 2017-01-03 05:29:30 IAsyncOperation does not contain a definition for
  5. 姚 广远 发表 2015-04-13 05:03:47 .NET运行机制
  6. 姚 广远 发表 2015-06-22 07:01:45 C++ 中的封送处理概述
  7. 姚 广远 发表 2015-04-13 02:54:10 C# 与 C++ 数据类型对照表
  8. dormy 发表 2013-12-12 02:28:41 c#.netDataGrid绑定数据库数据
  9. welpher 发表 2011-08-25 06:34:24 .net中c#访问sql server插入数据时获取自增长列数据
  10. Herb Sutter 发表 2013-07-09 16:47:02 Recommended reading: Why mobile web apps are slow
  11. root 发表 2015-04-16 09:10:02 C#加解密算法
  12. 汪宇杰 发表 2014-07-21 06:41:10 Portable Class Library中如何调用WCF OData Service

发表评论