Trong thử thách này, bạn sẽ được cung cấp một chuỗi chữ cái làm đầu vào. Chúng tôi sẽ định nghĩa "chống chuỗi" của một đầu vào đã cho là chuỗi với trường hợp tất cả các chữ cái được đảo ngược. Ví dụ
AaBbbUy -> aAbBBuY
Bạn nên viết một chương trình lấy một chuỗi làm đầu vào và tìm kiếm chuỗi con liền kề dài nhất có chuỗi chống cũng là một chuỗi con liền kề. Hai chất nền không được chồng lên nhau.
Ví dụ nếu bạn được cung cấp chuỗi
fAbbAcGfaBBagF
Các phần được in đậm sẽ là cặp chống chuỗi dài nhất.
Chương trình của bạn nên, một khi nó đã tìm thấy cặp, thu gọn chúng thành một ký tự duy nhất. Nó nên làm điều này bằng cách loại bỏ tất cả trừ ký tự đầu tiên của mỗi chuỗi con. Ví dụ chuỗi trên
fAbbAcGfaBBagF
sẽ trở thành
fAcGfagF
Chương trình của bạn sau đó sẽ lặp lại quy trình cho đến khi cặp chống chuỗi dài nhất là một ký tự đơn hoặc ngắn hơn.
Ví dụ: làm việc với cùng một chuỗi, cặp dài nhất mới sau khi thu gọn là
fAcGfagF
Vì vậy, chúng tôi thu gọn chuỗi một lần nữa
fAcGag
Bây giờ chuỗi không thể được thu gọn hơn nữa vì vậy chúng ta nên xuất nó.
Trong trường hợp hòa giữa các cặp ứng cử viên (ví dụ AvaVA
), bạn có thể thực hiện giảm ( AaA
hoặc AvV
, nhưng không Aa
).
Đây là môn đánh gôn, vì vậy câu trả lời sẽ được tính bằng byte với ít byte hơn.
Các trường hợp thử nghiệm
fAbbAcGfaBBagF -> fAcGag
AvaVA -> AaA / AvV
QQQQQQQ -> QQQQQQQ
fAbbAcQQQQaBBacqqqqA -> fAbcQBcq
gaq -> gaq
fAbbAcGfaBBagFaBBa -> fcGaBBag
Động lực
Mặc dù vấn đề này có vẻ tùy tiện nhưng nó thực sự là một vấn đề tôi gặp phải trong khi tạo mã để xử lý các đa giác cơ bản. Quá trình này có thể được sử dụng để giảm đa giác cơ bản thành đa giác n nhỏ hơn . Sau khi tôi thử nó, tôi nghĩ rằng nó sẽ tạo ra một sân golf nhỏ.
aaaAAAaaa -> aAaaa
sao