こんな問題に遭遇しました。
文字列が与えられ、同じ文字列がつながっていたら削除していきます。最後に残る文字を答えてください。
ただし一回の削除は同時に行っていきます。
aab -> b
aabba -> a
bbaab -> b ※ bbb -> "" とはならない
aaabbabbac -> aac -> a
という問題で
3行で解答している人がいました。私は迷走して15分では解けませんでした。
正規表現はあまり知らないので少し解析してみました。
/ /g /の間が正規表現
. 一文字なら、なんでもOK
( ) ひとかたまりとする
¥1 1つ前のもの (¥はキーボード上の¥ではなく。キーボードの"\" バックスラッシュ)
+ いくつあってもOK
なんでもいい一文字、それを同じ文字がいくつかあれば対象という意味になるらしい。
正規表現は軽い簡易言語ぐらいの情報量があり、なかなか解読できませんでした。
25行から28行のようなものをちょこちょこと作ってトライアンドエラーを繰返して、なんとかわかりました。
正規表現の部分をPython3に移植してみたのが15行目
Python3だと / /gではなく r' 'となるらしい (r" "でも可)
re.subは正規表現を使ったreplace文です。