Bạn được cung cấp hai chuỗi s và t. Trong một lần di chuyển, bạn có thể chọn bất kỳ một trong hai chuỗi và xóa ký tự đầu tiên (nghĩa là ngoài cùng bên

Bạn được cung cấp hai chuỗi s và t. Trong một lần di chuyển, bạn có thể chọn bất kỳ một trong hai chuỗi và xóa ký tự đầu tiên (nghĩa là ngoài cùng bên trái). Sau khi di chuyển, độ dài của chuỗi giảm đi 1. Bạn không thể chọn một chuỗi nếu nó trống.
Ví dụ: bằng cách áp dụng di chuyển đến chuỗi “where”, kết quả là chuỗi “here”, bằng cách áp dụng di chuyển chuỗi “a”, kết quả là một chuỗi rỗng “”. Bạn được yêu cầu làm cho hai chuỗi đã cho bằng nhau bằng cách sử dụng số lần di chuyển ít nhất. Có thể cuối cùng cả hai chuỗi sẽ bằng chuỗi rỗng và do đó chúng bằng nhau. Trong trường hợp này, câu trả lời rõ ràng là tổng độ dài của các chuỗi ban đầu.
Viết chương trình tìm số lần di chuyển tối thiểu để tạo hai chuỗi đã cho s và t bằng nhau.
Dữ liệu nhập:
– Dòng đầu tiên của đầu vào chứa S.
– Trong dòng thứ hai của đầu vào chứa t.
– Cả hai chuỗi chỉ bao gồm các chữ cái Latinh viết thường. Số lượng chữ cái trong mỗi chuỗi nằm trong khoảng từ 1 đến 2 ⋅ 105.
Kết quả:
– Xuất ra số lượng di chuyển ít nhất cần thiết.
Ví dụ
Input:
test
west
Output:
2
Input:
phu
u
Output:
2

0 bình luận về “Bạn được cung cấp hai chuỗi s và t. Trong một lần di chuyển, bạn có thể chọn bất kỳ một trong hai chuỗi và xóa ký tự đầu tiên (nghĩa là ngoài cùng bên”

  1. var s1,s2:string;

          si1,si2,dem:longint;

    begin

     writeln(‘nhap lan luot 2 chuoi’);

    readln(s1,s2);si1:=length(s1);si2:=length(s2);

    while (s1[si1]=s2[si2])and(si1>1)and(si2>1) do begin

         si1:=si1-1;si2:=si2-1;

    end;

    write(‘so lan di chuyen la:’,si1-1+si2-1);

    readln;

    end.

    Bình luận

Viết một bình luận