Code xoá kí tự có chỉ số chia hết cho 3 bị sai kết quả

Given a string, delete all its characters whose indices (0-based) are divisible by 3.

var i:integer;
var a:string;
begin
    readln(a);
    for i:=(length(a)-1)downto 0 do
        if (i mod 3)=0 then
            delete(a,i,i);
    writeln(a);
end.

Input (stdin)

Python

Your Output (stdout)

Pyn

Expected Output

yton

Compiler Message

Wrong Answer

Rất nhiều người gặp phải cái sai này.

Bạn duyệt một mảng (chuỗi) bằng for và trong quá trình duyệt nó, bạn lại thay đổi độ dài của chính mảng đó (thêm/bớt).
Mặc dù không lỗi cú pháp, không lỗi trong quá trình chạy, chắc chắn kết quả sẽ không như mong đợi.

Thay vì chỉnh sửa chính mảng đang duyệt, bạn tạo mảng khác và lưu những thay đổi vào mảng (khác) đó.

2 Likes

Hoặc cũng có thể tính lại :smiley:

p/s: lỗi biên dịch.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?