搜索边界时出现“超出时间限制”错误

时间:2019-02-22 19:12:38

标签: c#

此代码在一组有序短语中搜索右边界。程序可以在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;          
        }     
    }
}

1 个答案:

答案 0 :(得分:0)

使用String.Equals()方法代替string.Compare()。