用C#實現(xiàn)返回一個字符串的字符所有組合,輸入的字符串中字符不能有重復。如輸入"ABC",返回{"ABC","ACB","BAC","BCA"...},輸入WXYZ,返回{"WXYZ","WYXZ","WYZX"...}.
2 回答

UYOU
TA貢獻1878條經(jīng)驗 獲得超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; } 試了下,可以得到效果,但性能和效率你自己得優(yōu)化下。這里沒考慮你給AAC這種包含重復字符的情況。而且如果遞歸嵌套層數(shù)過多CLR也會報錯。內(nèi)存優(yōu)化也沒有做,我試了一個長點的,報內(nèi)存舉出,估計是返回的數(shù)據(jù)量過大導致

萬千封印
TA貢獻1891條經(jīng)驗 獲得超3個贊
這是Google還是Baidu的面試題,需要巧妙的解題思路,高級算法、還是只要有答案就行?
如果只要能得出答案,就很容易,如果需要高大上的答案,請明說...
- 2 回答
- 0 關(guān)注
- 747 瀏覽
添加回答
舉報
0/150
提交
取消