Pri*_*kar 13 .net c# algorithm data-structures
我做了这个功课.并以下列方式解决了它.我需要你的意见是否是一个好的方法,或者我需要使用任何其他数据结构以更好的方式解决它.
public string ReturnCommon(string firstString, string scndString)
{
StringBuilder newStb = new StringBuilder();
if (firstString != null && scndString != null)
{
foreach (char ichar in firstString)
{
if (!newStb.ToString().Contains(ichar) && scndString.Contains(ichar))
newStb.Append(ichar);
}
}
return newStb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
Bri*_*sen 19
对于替代解决方案,您可以将字符串视为可枚举,并使用Intersect()如下所示:
public static string Common(string first, string second)
{
return new string((first.Intersect(second)).ToArray());
}
Run Code Online (Sandbox Code Playgroud)
这对于第一种方法来说很好,但是你可以做一些改进,并且有一个小错误.
b包含a已经存在的角色c,您将重复它.Set来存储字符,因为a Set不会重复.+=串联组装字符串通常效率低下; 考虑使用一个StringBuilder或类似的字符串汇编类.a或是b空的,你根本不需要做任何工作!只需返回一个空字符串.通过想象如果开始使用大字符串,算法如何缩放,您可以考虑一些更复杂的改进.例如,一种方法可能是如果一个字符串比另一个字符串长得多,您可以对较长的字符串进行排序并删除重复字符串.然后,您可以非常快速地对较短字符串的字符进行二进制搜索.