LeetCodeのEasy問題を解いて勉強するSwift Valid Parentheses編
LeetCodeのEasy問題を解いて勉強するSwift Valid Parentheses編
新しくSwiftを触ることになりそうなので
ひとまずコードを書いてみることにする。
LeetCodeのEasy問題は比較的解き方を知っている(はず)なので、Python3で書いていた部分をどのような書き方に直すのかを色々思い出しつつ試行錯誤していく。
書いている人のレベル感
Swiftビギナー。基本的な文法すらあやふやなので始めて数日レベルと言っても過言ではない。
LeetCode
お題が与えられ、その内容に合わせてコードを書き、提出して合ってるかどうかを確認できる。
問題はソフトウェアエンジニアのコーディング面接で出されたお題をそのまま引用していることがほとんど。
前回
LeetCodeのEasy問題を解いて勉強するSwift Valid Palindrome編
次回
LeetCodeのEasy問題を解いて勉強するSwift Binary Search編
Valid Palindrome
Valid Parentheses
与えられた文字列の括弧の種類と数がイコールであるかを判定する関数を書く。
class Solution {
func isValid(_ s: String) -> Bool {
var stack:[Character] = []
for c in s{
switch c{
case "(": stack.append(")")
case "{": stack.append("}")
case "[": stack.append("]")
default: guard c == stack.popLast() else {return false}
}
}
return stack.isEmpty
}
}
guard
ここでguard文について。
guard文とはif文と似た条件分岐の文法。
じゃあif文でいいんじゃないの?となるが、if文とは異なり、guard文では最初の分岐条件がfalse判定の時に処理される。
具体例として
default: guard c == stack.popLast() else {return false}
という記述が回答内にあるが、これはc == stack.popLast()
がfalse
だった場合にのみelse
内のreturn false
が実行される。
学べたこと
Swiftでのswitch分の書き方
SwiftでのStackの宣言方法(popLast)
guard else文の使い方
コメント
コメントを投稿