14
文字列を裏返す
バランスの取れた文字列は、()すべての括弧を別の括弧と一致させるための括弧の文字列です。より厳密には、この文法がまたがる文字列です。 S → (S)S | ε 文字列を「裏返し」にする方法は次のとおりです。 (およびのすべての出現)を互いに切り替える 文字列の前面から背面への文字の移動は、文字列のバランスが再び取れるまで続きます。 例を見てみましょう。 バランスの取れた文字列から始めます。 (()(())()) 次に、括弧を切り替えて作成します ))())(()(( 次に、文字列のバランスが取れるようになるまで、文字列の前から後ろに文字を移動します。 ))())(()(( )())(()(() ())(()(()) ))(()(())( )(()(())() (()(())()) それが結果です! 一部の文字列は、複数の方法で裏返しにできることに注意してください。たとえば、文字列 (()()) 裏返した場合、次のいずれかになります。 ()(()) または (())() ただし、すべての文字列には少なくとも1つのソリューションがあります。 仕事 バランスの取れた文字列を入力および出力として使用し、その文字列を裏返しにするプログラムを作成します。複数の有効な出力が存在する可能性がある場合は、そのうちの1つだけを出力する必要があります。別のブレースタイプ(<>、[]または{}必要に応じて)を使用できます。 これはコードとゴルフの競合であるため、ソースコードのサイズをバイト単位で最小化することを目指してください。 テストケース (()()) -> ()(()), (())() (()(())()) -> (()(())()) ((())())() -> (()(()()))