用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也会报错。内存优化也没有做,我试了一个长点的,报内存举出,估计是返回的数据量过大导致
添加回答
举报
0/150
提交
取消