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

cho xâu s, lấy dữ liệu từ xau.inp , tìm độ dài lớn nhất chứa các kí tự a liên tiếp có trong xâu s, kết quả ghi vào xau.out
ví dụ
xấu s='aaaaabccvaaavasdada'
cho kết quả là 'aaaaa'
em xin cảm ơn trước ạ
 

tengiday

Happy life
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).
[ah]
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;
[/ah]
 

Thống kê

Chủ đề
100,657
Bài viết
467,424
Thành viên
339,831
Thành viên mới nhất
TuanShinhanbank
Top