kết quả từ 1 tới 2 trên 2

Giúp em làm bài tập pascal về xâu dài nhất

  1. #1
    Ðến Từ
    Hà Nam
    Thành Viên Thứ: 359840
    Giới tính: Nam
    Bài gửi
    10

    Giúp em làm bài tập pascal về xâu dài nhất

    Quick reply to this message Trả lời       


  2. #2
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Giúp em làm bài tập pascal về xâu dài nhất

    Bạn cần 2 biến: maxLen (lưu chiều dài lớn nhất của chuỗi có 'a') và currentLen (lưu chiều dài hiện tại của chuỗi có 'a'). Sau đó thì duyệt từng vị trí một, nếu gặp 'a' thì tăng currentLen lên và nếu currentLen > maxLen thì update lại maxLen; nếu không phải 'a' thì set currentLen := 0. Thuật toán có độ phức tạp O(n).
    Mã:
    function longest_a_string(input : string) : string;
    var i, maxLen, maxIndex, currentLen : integer;
    begin
        maxLen := 0;
        currentLen := 0;
        maxIndex := 0;
        for i := 1 to length(input) do
            if (input[i] = 'a') then
                begin
                    currentLen := currentLen + 1;
                    if (currentLen > maxLen) then
                        begin
                            maxLen := currentLen;
                            maxIndex := i;
                        end;
                end
            else
                currentLen := 0;
        if (maxLen > 0) then
            longest_a_string := copy(input, maxIndex - maxLen + 1, maxLen)
        else
            longest_a_string := '';
    end;
    LCD: 13.3" 1920x1080 IPS
    CPU: Intel i7 - 4700MQ (2.4 GHz - 3.4 GHz)
    GPU: Nvidia GTX 765m with GDDR5 2GB
    RAM: 2x8GB G.Skill 2133
    HDD: Samsung SSD 850 Pro 512 GB
    2 kg.