Viết chương trình hoặc hàm, cho hai chuỗi ASCII A
và B
, sẽ tạo ra các chuỗi A'
và B'
trong đó các chuỗi con chung được đảo ngược ở vị trí của chúng. Quá trình tìm kiếm A'
như sau:
A'
ban đầu trống rỗng.- Nếu ký tự đầu tiên của
A
là trongB
, tìm tiền tố dài nhất trongA
đó là một chuỗi con củaB
. Xóa tiền tố này khỏiA
và thêm đảo ngược của nó vàoA'
. - Nếu không, loại bỏ ký tự đầu tiên này
A
và thêm nó vàoA'
. - Lặp lại các bước 2-3 cho đến khi
A
trống.
Việc tìm kiếm B'
được thực hiện tương tự.
Thí dụ
Hãy xem xét các chuỗi A = "abc bab"
và B = "abdabc"
. Đối với A'
, đây là những gì xảy ra:
A = "abc bab"
: Ký tự đầu tiên"a"
nằm trong B và tiền tố dài nhất của A được tìm thấy trong B là"abc"
. Chúng tôi xóa tiền tố này khỏi A và thêm đảo ngược của nó"cba"
vào A '.A = " bab"
: Ký tự đầu tiên" "
không nằm trong B, vì vậy chúng tôi xóa ký tự này khỏi A và thêm nó vào A '.A = "bab"
: Ký tự đầu tiên"b"
nằm trong B và tiền tố dài nhất của A được tìm thấy trong B là"b"
. Chúng tôi xóa tiền tố này khỏi A và thêm đảo ngược của nó (vẫn còn"b"
) vào A '.A = "ab"
: Ký tự đầu tiên"a"
nằm trong B và tiền tố dài nhất của A được tìm thấy trong B là"ab"
. Chúng tôi xóa tiền tố này khỏi A và thêm đảo ngược của nó"ba"
vào A '.A = ""
: A trống, vì vậy chúng tôi dừng lại.
Như vậy chúng ta có được A' = "cba" + " " + "b" + "ba" = "cba bba"
. Đối với B ', quy trình tương tự:
B = "abdabc" -> "a" in A, remove prefix "ab"
B = "dabc" -> "d" not in A, remove "d"
B = "abc" -> "a" in A, remove prefix "abc"
Như vậy chúng ta có được B' = "ba" + "d" + "cba" = "badcba"
.
Cuối cùng, chúng tôi trả lại hai chuỗi, tức là
(A', B') = ("cba bba", "badcba")
Các trường hợp thử nghiệm
"abc bab", "abdabc" -> "cba bba", "badcba"
"abcde", "abcd bcde" -> "dcbae", "dcba edcb"
"hello test", "test banana" -> "hello tset", "tset banana"
"birds flying high", "whistling high nerds" -> "bisdr flyhgih gni", "wihstlhgih gni nesdr"
Mã ngắn nhất trong byte thắng.
"cba bba", "badcba"
bao gồm dấu ngoặc kép và dấu phẩy?