Tạo palindrome

Xem PDF



Tác giả:
Dạng bài
Điểm: 300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một xâu \(s\). Cần thêm ít nhất bao nhiêu ký tự vào cuối xâu \(s\) để tạo thành một xâu đối xứng? In ra xâu đối xứng đó.

Input

  • Dòng đầu tiên chứa một số nguyên dương \(t\), số truy vấn bạn phải trả lời \((1 \leq t \leq 100)\).
  • \(t\) dòng tiếp theo, mỗi dòng chứa một xâu \(s\).
  • Tổng độ dài các xâu \(s\) không vượt quá \(5 \times 10^5\).

Output

  • Với mỗi truy vấn, in ra một dòng là xâu đối xứng tạo thành.

Example

Test 1

Input
4
aaaa
abba
amanaplanacanal
xyz 
Output
aaaa
abba
amanaplanacanalpanama
xyzyx

Bình luận


  • 1
    minhtuanitk20    8:41 p.m. 28 Tháng 10, 2021

    WA 1 test đau


    • 1
      hongquanyl1    12:57 p.m. 7 Tháng 10, 2021

      mà nick bạn Long là gì thế

      1 phản hồi

      • 1
        hongquanyl1    10:07 p.m. 6 Tháng 10, 2021

        bạn kb zalo hay fb thế bạn Long

        1 phản hồi

        • 1
          hongquanyl1    9:49 p.m. 6 Tháng 10, 2021

          kb với mình ko bạn long

          1 phản hồi

          • 6
            longkold00    7:29 p.m. 6 Tháng 10, 2021 chỉnh sửa 3

            Sau đây mình sẽ trình bày ý tưởng bài toán bằng 2 con trỏ:

            1. Gọi xâu ban đầu có độ dài s=> n=s.length(-1), ta đặt i=0, j=n và tạo 1 xâu a="";

            2. Trong khi i<j ta thực hiện vòng lặp while. Nếu s[i]=s[j] gán j--, ngược lại ta kiểm tra xem xâu từ j->n có là xâu con của xâu từ 0->i hay không. nếu không, if(j!=n) {i--;}
              j=n;

            3. Khi vòng lặp kết thúc sẽ có 2 trường hợp xảy ra. if(i==j) a=s.substr(0,2*i-n); else a=s.substr(0,2*i-n-1); . Sau đó ta đảo ngược xâu a và in ra xâu s và a.


            Dưới đây là phần code của mình

            enter link description here

            1 phản hồi

            • 0
              tien_noob    12:00 a.m. 25 Tháng 12, 2020

              dạ có ai để lại hint cho người đi sau không ạ :< em làm bài này nhưng mà chỉ biết cách quy hoạch động thì dựng mảng 2 chiều và truy vết nhưng maxping thì độ dài chỉ tầm 1000 là căng ạ :<

              1 phản hồi