此代码在一组有序短语中搜索右边界。程序可以在VS中正常工作,但是网站上的特殊编译器会显示错误“超过时间限制”。这意味着代码必须运行得更快。您能帮我改进代码吗?
using System;
using System.Collections.Generic;
using System.Linq;
namespace Autocomplete
{
public class RightBorderTask
{
public static int GetRightBorderIndex(IReadOnlyList<string> phrases, string prefix, int left, int right)
{
if (phrases.Count == 0 || string.Compare(prefix, phrases[right-1], StringComparison.OrdinalIgnoreCase) > 0)
return phrases.Count;
while (left < right)
{
var middle = (right - left) / 2;
if (string.Compare(prefix, phrases[middle], StringComparison.OrdinalIgnoreCase) < 0)
right = middle;
else left = middle + 1;
}
return right;
}
}
}
答案 0 :(得分:0)
使用String.Equals()方法代替string.Compare()。