我现在又两个字符串,比如:
s1:='我叫XXX';s2:='我叫YYY';要写个函数,能提取出两个字符串公有的部分(也就是“我叫”)我这个例子是简单的,实际不是很好写,请高手考虑一下复杂情况,给个算法,思路也可以。。小弟谢谢了

解决方案 »

  1.   

    这里我用了WideString类型,这样不会出现半个汉字的情况。
    function MaxSub(S1, S2: WideString): WideString;
    var
      I, J: Integer;
      T: WideString;
    begin
      Result := '';
      if (S1 = '') or (S2 = '') then Exit;
      for I := 1 to Length(S1) do
      begin
        for J := 1 to Length(S1) - I do
        begin
          T := Copy(S1, I, J);
          if Pos(T, S2) > 0 then
          begin
            if J > Length(Result) then
              Result := T;
          end else Break;
        end;
      end;
    end; { MaxSub }