统计字符串中子字符串出现的次数,并归类。
例如:02-03-04-05-06-07-08-09-10-10
统计结果为:
【0次】:01
【1次】:02 03 04 05 06 07 08 09
【2次】:10次数的最大不定,也有可能千次或千万次。没有的就不显示出来:例如【3次】没有就不显示出来请问这算法的思路是怎样的呢? 集思广益。 求思路,不一定要代码。希望各位涌跃发言,新手分少点,不好意思。

解决方案 »

  1.   

    请看下列示例代码:
    implementation
    uses StrUtils;
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      S: string;
      StrList : array[1..10] of string;
      i,j,k,Count :integer;
    begin
      S :='02-03-04-05-06-07-08-09-10-10';
      for i := 1 to 9 do  //初始化要检查的子串
        StrList[i] := '0'+IntToStr(i);
      StrList[10] := '10';
      for i := 1 to 10  do //对每个子串检查出现次数
      begin
        Count := 0;
        k := 1;
        for j := 1 to Length(S)-1 do
          if PosEx(StrList[i],S,k)>0  then
          begin
            Inc(Count);
            k := PosEx(StrList[i],S,k)+Length(StrList[i]);
          end;
        ShowMessage(StrList[i]+Format(' 出现: %d 次',[Count]));
      end;end;end.