Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Valid Parentheses #23

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Valid Parentheses #23

wants to merge 2 commits into from

Conversation

rihib
Copy link
Owner

@rihib rihib commented Aug 31, 2024

Valid Parenthesesを解きました。レビューをお願いいたします。

問題:https://leetcode.com/problems/valid-parentheses/
言語:Go

プッシュダウンオートマトン

valid parentheses は、チョムスキー階層、タイプ-2、文脈自由文法だから、プッシュダウンオートマトンで書ける、を多分連想します。
これは、全部一つのことを言っていますが、これは常識です。
正規言語、正規文法、有限オートマトン、と対比されます。
https://discord.com/channels/1084280443945353267/1201211204547383386/1202541275115425822

再帰下降構文解析でも解くことができる

https://discord.com/channels/1084280443945353267/1226508154833993788/1232008948052131941
https://discord.com/channels/1084280443945353267/1235829049511903273/1238815737548898346
https://discord.com/channels/1084280443945353267/1235829049511903273/1238903676484063365
https://ja.wikipedia.org/wiki/再帰下降構文解析
https://www.sigbus.info/compilerbook#文法の記述方法と再帰下降構文解析
https://x.com/hikalium/status/1134772653955272705

Brackets VS Parentheses

基本的にparenthesisというと丸括弧のことを指し、括弧全般を指すのであればbracketを使う。
https://en.wikipedia.org/wiki/Bracket

Operator precedence

Go

https://go.dev/ref/spec#Operator_precedence

Python

https://docs.python.org/3/reference/expressions.html#operator-precedence

Java

(3 * 5) + 2 と書かれたら、3 * 5 + 2 のほうがよくないかと思うくらい、*+ の優先順位は慣れていると思います。
ここに表があります。時々見てください。
https://introcs.cs.princeton.edu/java/11precedence/
歴史的事情で、== とビット演算の位置がこうなっているという話はあり、
たとえば、Rust だと、== と &^| あたりの優先順位が逆です。
https://doc.rust-lang.org/reference/expressions.html
このため、このあたりには、あえて優先順位通りでも()をつけることがあります。
(が、そもそもあまりこのあたりは使わないです。)
しかし、大体の場合は優先順位通りになっていたら *+ のようにつけないでしょう。
goto-untrapped/Arai60#10 (comment)

すでに解いている方々:
hayashi-ay/leetcode#16
colorbox/leetcode#4
cheeseNA/leetcode#10
Mike0121/LeetCode#2
Exzrgs/LeetCode#5
goto-untrapped/Arai60#10
sakzk/leetcode#6
TORUS0818/leetcode#8
kzhra/Grind41#2
fhiyo/leetcode#6
Ryotaro25/leetcode_first60#7
kagetora0924/leetcode-grind#8
kazukiii/leetcode#7
seal-azarashi/leetcode#6
ryoooooory/LeetCode#13
Yoshiki-Iwasa/Arai60#5
hroc135/leetcode#6

@rihib
Copy link
Owner Author

rihib commented Aug 31, 2024

再帰下降構文解析についてはまた後ほどチャレンジします(オートマトンのあたりの勉強がまだちゃんとできていないので一回がっつりそこら辺の勉強をして理解してから取り組みたい、、)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants