プログラムや関数を書く2つのASCII文字列を与えられ、そのA
とB
、文字列を生成しますA'
し、B'
共通部分文字列は、その場所にどこを逆転しています。検索のプロセスA'
は次のとおりです。
A'
最初は空です。- 最初の文字が場合
A
であるB
、の最長プレフィックス見つけるA
のサブであるがB
。からこの接頭辞を削除しA
、その逆をに追加しA'
ます。 - それ以外の場合は、この最初の文字をから削除し
A
てに追加しA'
ます。 A
が空になるまで、手順2〜3を繰り返します。
検索B'
も同様に行われます。
例
文字列A = "abc bab"
とを考えてみましょうB = "abdabc"
。の場合A'
、これは何が起こるかです:
A = "abc bab"
:最初の文字"a"
はBにあり、Bで見つかったAの最長の接頭辞は"abc"
です。このプレフィックスをAから削除し、その逆"cba"
をA 'に追加します。A = " bab"
:最初の文字" "
はBにないため、この文字をAから削除してA 'に追加します。A = "bab"
:最初の文字"b"
はBにあり、Bで見つかったAの最長の接頭辞は"b"
です。このプレフィックスをAから削除し、その逆(まだ"b"
)をA 'に追加します。A = "ab"
:最初の文字"a"
はBにあり、Bで見つかったAの最長の接頭辞は"ab"
です。このプレフィックスをAから削除し、その逆"ba"
をA 'に追加します。A = ""
:Aは空なので停止します。
したがって、取得しA' = "cba" + " " + "b" + "ba" = "cba bba"
ます。B 'の場合、プロセスは同様です。
B = "abdabc" -> "a" in A, remove prefix "ab"
B = "dabc" -> "d" not in A, remove "d"
B = "abc" -> "a" in A, remove prefix "abc"
したがって、取得しB' = "ba" + "d" + "cba" = "badcba"
ます。
最後に、2つの文字列を返します。
(A', B') = ("cba bba", "badcba")
テストケース
"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"
バイト単位の最短コードが優先されます。
@TimmyD正確な入力/出力形式はあなたの選択です。入力が小文字のASCIIであるとは限りません-印刷可能なASCIIである可能性があります。
—
orlp 2015
空の文字列は正しい入力ですか?
—
MtnViewMark 2015
@MtnViewMarkはい。
—
orlp 2015
"cba bba", "badcba"
引用符とコンマを含めるのと同じようなものですか?