用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也会报错。内存优化也没有做,我试了一个长点的,报内存举出,估计是返回的数据量过大导致
万千封印
TA贡献1891条经验 获得超3个赞
这是Google还是Baidu的面试题,需要巧妙的解题思路,高级算法、还是只要有答案就行?
如果只要能得出答案,就很容易,如果需要高大上的答案,请明说...
- 2 回答
- 0 关注
- 711 浏览
添加回答
举报
0/150
提交
取消