用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
提交
取消