zoukankan      html  css  js  c++  java
  • 判断字符串中子串个数的函数

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    {判断字符串中子串个数的函数}
    function GetSubStrNum(SubStr,Str: string): Integer;
    begin
      Result := 0;
      while Pos(SubStr, Str) > 0 do
      begin
        Str := Copy(Str, Pos(SubStr,Str)+1, Length(Str));
        Inc(Result);
      end;
    end;
    
    {测试}
    procedure TForm1.FormCreate(Sender: TObject);
    var
      s1,s: string;
    begin
      s1 := '万一';
      s := '万一万一万一';
      ShowMessage(IntToStr(GetSubStrNum(s1,s))); {3}
    end;
    
    end.
    
    再优化:
    function GetSubStrNum(const SubStr,Str: WideString): Integer;
    var
      pw: PWideChar;
      i,SubLen: Integer;
    begin
      Result := 0;
      pw := PWideChar(Str);
      SubLen := Length(SubStr);
      while i > 0 do
      begin
        i := Pos(SubStr, pw);
        Inc(pw, i - 1 + SubLen);
        if Boolean(i) then Inc(Result);
      end;
    end;
    
    这是 "道法自然" 兄的代码:
    function GetSubStrNum(const SubStr, Str: widestring ): Integer;
    var
      i,x: Integer;
      Len,LenSubStr: Integer;
    begin
      Result := 0;
      i := 1;
      LenSubStr := Length(SubStr);
      Len := Length(Str) - LenSubStr + 1;
      while i <= Len do
      begin
        if Str[i] = SubStr[1] then
        begin
          x := 1;
          while (x < LenSubStr) and (Str[i+x] = SubStr[x+1]) do Inc(x);
          if (x = LenSubStr) then Result := Result + 1;
          Inc(i,x);
        end else Inc(i);
      end;
    end;
    
  • 相关阅读:
    vscode 基本知识以及如何配置 C++ 环境
    计算机视觉
    GitHub 大事件
    tf 2.0
    AI 公司与比赛
    Faster RCNN 学习与实现
    pycahrm安装说明
    python 并发之线程
    python 并发之进程
    python socketserver ftp上传功能
  • 原文地址:https://www.cnblogs.com/del/p/1216304.html
Copyright © 2011-2022 走看看