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