为了账号安全,请及时绑定邮箱和手机立即绑定

算法题:用C#实现返回一个字符串的字符所有组合

算法题:用C#实现返回一个字符串的字符所有组合

梵蒂冈之花 2018-11-22 18:18:57
用C#实现返回一个字符串的字符所有组合,输入的字符串中字符不能有重复。如输入"ABC",返回{"ABC","ACB","BAC","BCA"...},输入WXYZ,返回{"WXYZ","WYXZ","WYZX"...}.
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

public List<string> GetPattern(string str)
        {            if (string.IsNullOrEmpty(str))
                        return null;
                     else if (str.Length == 1)               
                         return new List<string> { str };            
                     var result = new List<string>();            
                     var current = str[0];            
                     var sbChildren = GetPattern(str.Substring(1));            
                     foreach (var child in sbChildren)
                    {               
                    for (var i = 0; i <= child.Length; i++)
                    result.Add(child.Insert(i, current.ToString()));
                     }           
                      return result;
        }


试了下,可以得到效果,但性能和效率你自己得优化下。这里没考虑你给AAC这种包含重复字符的情况。而且如果递归嵌套层数过多CLR也会报错。内存优化也没有做,我试了一个长点的,报内存举出,估计是返回的数据量过大导致


查看完整回答
反对 回复 2018-11-25
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

高数上有排列和组合的概念 你可以参考下


查看完整回答
反对 回复 2018-11-25
  • 2 回答
  • 0 关注
  • 934 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信