要件:
のみ与えられ含み '('
、')'
、'{'
、'}'
、'['
、']'
文字列は、それは文字列が有効であるか否かを判断します。
有効な文字列を満たしている必要があります。
- 左ブラケットは、同じタイプの閉じ括弧で閉じなければなりません。
- 左括弧が正しい順序で閉じなければなりません。
空の文字列が有効な文字列と考えることができます。
コードは以下の通りであります:
パブリック 静的 ブール IsValiad(ストリングS) { スタック < ストリング >スタック= 新しいスタック< ストリング >(); // 创建一个字符串的栈 辞書< 文字列、文字列 > DIC = 新しい辞書< 文字列、文字列 > (); dic.Add(" ("、" )" ); dic.Add(" [ "、" ] " dic.Add(" { "、" } " )。 もし(文字列 .IsNullOrEmpty(S))を返す 真。 用(int型 i = 0 ; iがs.Lengthを<Iは++ ) { もし、(S [I] == ' (' || S [I] == ' [ ' || S [I] == ' { ' ) { stack.Push(S [I] .ToString()); } 他{ もし(stack.Countの== 0)を返す 偽。 文字列記号= stack.Pop()。 もし(!DIC [記号] = S [i]を.ToString())は返す 偽。 } } を返す stack.Countの== 0?真:偽; }
コード分析:
1.スタックに左にするとき、左括弧を括弧に遭遇しました
2.スタックの右上の要素はブラケットポップに置かれ遭遇し、右ブラケットの現在の同等と右括弧に対応する上部要素かどうかを決定します
3.極端な場合には、すべて左または全て右シンボル記号文字がされている場合。どちらの場合は、スタックの任意の要素、正しい文字列データスタックポップがあるかどうかを決定することによって決定することができます