zoukankan      html  css  js  c++  java
  • 十八、详测 Generics Collections TList (9): BinarySearch

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 
    = class(TForm)
        Button1: TButton;
        
    procedure Button1Click(Sender: TObject);
      
    end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    uses Generics.Collections, Generics.Defaults;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      List: TList
    <string>;
      num: Integer;
      b: Boolean;
      Comparer: IComparer;
    begin
      List :
    = TList<string>.Create();
      List.AddRange([
    '123''ABB''ABC']);

      
    {默认的查找需要完全吻合才能找到}
      
    if List.BinarySearch('ABC', num) then ShowMessage(IntToStr(num)); {2}

      
    {这里自定义个对比器, 只要第一个字符吻合就算找到了}
      Comparer :
    = TComparer<string>.Construct(
        
    function(const s1,s2: string): Integer
        
    begin
          Result :
    = Ord(s1[1]) - Ord(s2[1]);
        
    end);

      
    if List.BinarySearch('ABC', num, Comparer) then ShowMessage(IntToStr(num)); {1}
          
      List.Free;
    end;

    end.
  • 相关阅读:
    LeetCode 12. 整数转罗马数字
    [Python] for in range()使用以及列表字符串反转方法
    组合数问题
    「BJOI2020」封印
    数据结构优化建图
    小Q与找茬
    无旋Treap学习
    jzoj5679
    数星星
    凸性
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1596525.html
Copyright © 2011-2022 走看看