最好的解决方案是:
系统在提交答案之后将答案格式化好,按先后顺序,去重排序存好!
比较时,直接比较,搞定,空间时间复杂度都是O(1);
如果:用户答案,标准备答案都是无序时。如何高效比对?
/// <summary>
/// 较对答案
/// </summary>
/// <param name="answer">考生答案</param>
/// <param name="correct">标准答案</param>
/// <returns></returns>
public static bool Test( string answer, string correct )
{
if ( answer == null )
return false;
else if ( answer.Length != correct.Length )
return false;
else
{
int a = 0, b = 0;
for ( int i = 0; i < answer.Length; i++ )
{
a |= 1 << ( answer[i] - 'A' ) % ( 'a' - 'A' );
b |= 1 << ( correct[i] - 'A' ) % ( 'a' - 'A' );
}
return a == b;
}
}
算法,你懂的......