Bài tập Pascal: Ký tự đặc biệt

Cho 2 chuỗi S và T, với chuỗi T được tạo thành bằng cách hoán vị chuỗi S sau đó thêm vào đúng 1 ký tự bất kỳ tại một vị trí bất kỳ trong chuỗi đã hoán vị. Viết chương trình tìm ký tự đã thêm vào.Input: DACBIET.INP gồm 2 dòng: dòng thứ nhất chứa chuỗi S và dòng thứ hai chứa chuỗi T. Biết rằng độ dài của từng chuỗi không quá 10^4. Output: DACBIET.OUT gồm đúng 1 ký tự duy nhất là ký tự đặc biệt. Ví dụ: S = 'abcd', T = 'abdce', thì phải in ra ký tự 'e'.
 

tengiday

Happy life
Bạn dùng phép 'xor' toàn bộ ký tự của S và T. Kết quả cuối cùng chính là ký tự cần tìm. Code đại khái là:
[ah]
Mã:
t := 0;
for i := 1 to length(S) do
    t := t xor ord(S[i]);
for i := 1 to length(T) do
    t := t xor ord(T[i]);
writeln(chr(t));
[/ah]
Bạn không cần lưu chuỗi S và T. Đọc file vào từng ký tự; đọc tới đâu, 'xor' tới đó. Đọc xong file là in ra kết quả luôn. Ví dụ đại khái như:
Mã:
while not EOF do
    begin
        read(c);
        t := t xor ord(c);
    end;
Độ phức tạp là O(|S| + |T|).
 
Top