Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Xác định xâu con của chuỗi


uses crt;
var s:string;
    a:array[1..100] of string;
    iA:byte;
    sXuat:string;

    // xuat chuoi con khac nhau
    procedure ExportSubString(arr:array of string);
    var i:byte;       
    begin
        sXuat := arr[1];
        writeln(sXuat);
        for i:=2 to iA do 
            if arr[i]<>sXuat then
        begin
            sXuat := arr[i];
            write(sXuat,' ');
        end;
    end;
    
    // sap xep cac chuoi con
    procedure SortString(arr:array of string);
    var i,j:byte;
        temp:string;
    begin
        for i:=1 to iA-1 do 
            for j:=i+1 to iA do 
            if arr[j]<arr[i] then
        begin
            temp := arr[j];
            arr[j]:=arr[i];
            arr[i]:=temp;
        end;
        ExportSubString(arr);
    end;
    
    // tach chuoi ra cac chuoi con
    procedure SplitString(s:string);
    var i,j,Len:byte;
        ss:string;
    begin
        iA  := 0;
        len := length(s);
        i   := len;
        while i>=1 do 
        begin
            fillchar(a,sizeof(a),0);
           for j:=1 to (len-i+1) do 
           begin
               ss := copy(s,j,i);
               inc(iA);a[ia]:=ss;
           end;
           SortString(a);
           dec(i);
        end;
    end;

    //main
    begin 
        repeat
            clrscr;
            writeln('Nhap xau can kiem tra: > 1 ky tu va <=15 ky tu');
            readln(s);
        until ((length(s)>1) and (length(s)<=15));
        SplitString(s);
        readln;
    end.