Tulis program atau fungsi yang, diberi dua string ASCII Adan B, akan menghasilkan string A'dan di B'mana substring umum dibalikkan di tempatnya. Proses untuk menemukan A'adalah sebagai berikut:
A'awalnya kosong.- Jika karakter pertama
Aadalah dalamB, temukan awalan terpanjangAyang merupakan substring dariB. Hapus awalan ini dariAdan tambahkan pembalikannya keA'. - Jika tidak, hapus karakter pertama ini dari
Adan tambahkan keA'. - Ulangi langkah 2-3 hingga
Akosong.
Menemukan B'dilakukan dengan cara yang sama.
Contoh
Mari kita pertimbangkan senar A = "abc bab"dan B = "abdabc". Sebab A', inilah yang terjadi:
A = "abc bab": Karakter pertama"a"dalam B dan awalan terpanjang dari A ditemukan di B adalah"abc". Kami menghapus awalan ini dari A dan menambahkan pembalikannya"cba"ke A '.A = " bab": Karakter pertama" "tidak dalam B, jadi kami menghapus karakter ini dari A dan menambahkannya ke A '.A = "bab": Karakter pertama"b"dalam B dan awalan terpanjang dari A ditemukan di B adalah"b". Kami menghapus awalan ini dari A dan menambahkan pembalikannya (yang masih"b") ke A '.A = "ab": Karakter pertama"a"dalam B dan awalan terpanjang dari A ditemukan di B adalah"ab". Kami menghapus awalan ini dari A dan menambahkan pembalikannya"ba"ke A '.A = "": A kosong, jadi kami berhenti.
Demikian kita dapatkan A' = "cba" + " " + "b" + "ba" = "cba bba". Untuk B ', prosesnya mirip:
B = "abdabc" -> "a" in A, remove prefix "ab"
B = "dabc" -> "d" not in A, remove "d"
B = "abc" -> "a" in A, remove prefix "abc"
Demikian kita dapatkan B' = "ba" + "d" + "cba" = "badcba".
Akhirnya, kami mengembalikan dua string, yaitu
(A', B') = ("cba bba", "badcba")
Uji kasus
"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"
Kode terpendek dalam byte menang.
"cba bba", "badcba"menyertakan tanda kutip dan koma?