Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

1.8 ディスカッションと練習問題 問1.3解答 #63

Open
marina1017 opened this issue Jul 4, 2019 · 3 comments
Open

1.8 ディスカッションと練習問題 問1.3解答 #63

marina1017 opened this issue Jul 4, 2019 · 3 comments

Comments

@marina1017
Copy link

marina1017 commented Jul 4, 2019

@spinute

考えた解答

マッチした文字列を判定するために、「{{()[]}}」を一個ずつスタックに入れていって、
pushする前に、一番上と次の中身がペアかどうかを確認して、ペアではないことがわかればpushする。
ペアであることがわかったらスタックから取り除く。これを繰り返してマッチした文字列かどうかを判定する

プロジェクト---スケッチ-4

@spinute
Copy link
Owner

spinute commented Jul 4, 2019

@marina1017

アイデアはそんな感じです!

これを繰り返してマッチした文字列かどうかを判定する

については、これを繰り返して、結局どうなるとマッチした文字列で、どんなときにはそうでないのかを、もう少し書いたほうが良さそうです。

@marina1017
Copy link
Author

ありがとうございます
もうちょっと文言を書き足しました!
いかがでしょう?

マッチした文字列を判定するために、「{{()[]}}」を一個ずつスタックに入れていって、
pushする前に、一番上と次の中身がペアかどうかを確認して、ペアではないことがわかればpushする。
ペアであることがわかったらスタックから取り除く。
これを繰り返して、「{{()[]}}」のすべての要素をスタックに入れた時、スタックの中身が無ければマッチした文字列であり、一つでも残っていればマッチした文字列でないことがわかる。

@spinute
Copy link
Owner

spinute commented Jul 5, 2019

それで合ってます!

ちなみに、もう少しだけ効率を上げることができて、最後までスタックに入れなくても、ペアにならない閉じカッコが見つかったらその時点でマッチした文字列でないことがわかります。

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants