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

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

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

C#
慕斯709654 2018-11-07 10:10:49
用C#实现返回一个字符串的字符所有组合,输入的字符串中字符不能有重复。如输入"ABC",返回{"ABC","ACB","BAC","BCA"...},输入WXYZ,返回{"WXYZ","WYXZ","WYZX"...}.
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞


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-11
?
万千封印

TA贡献1891条经验 获得超3个赞

这是Google还是Baidu的面试题,需要巧妙的解题思路,高级算法、还是只要有答案就行?

如果只要能得出答案,就很容易,如果需要高大上的答案,请明说...


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

添加回答

举报

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