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文の使い方

コメント

このブログの人気の投稿

Braveブラウザの同期機能をiPhoneで設定した話。

failed: unable to get local issuer certificate (_ssl.c:1123)と出たので解決した話

自作のChrome Extensionをインポートした時に "Invalid value for 'content_scripts[0].matches[0]': Empty path."というエラーが出たので解決した