プログラムや関数を書く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"引用符とコンマを含めるのと同じようなものですか?