問題の意味によると、最初の反応は、スタック、左と右括弧が一致し、スタックから、左括弧を使用することで、スタックは、そうでない場合は、括弧を残したことになります。
ここでIは、配列比較の端、ブラケット場合に遭遇括弧スタックプッシュとポップ動作シミュレート「ポインタ」の配列は、0へのポインタ点の初期位置は、スタックに直接左ブラケットが発生空のスタックを示し使用しますそうでない場合は、ポインタの値が1だけデクリメントされ、比較の後、ポインタ値が0であれば、true、そうでない場合はfalseを返し、右ブラケットを直接falseを返すと一致しない場合、一致します
クラスソリューション{ パブリック ブールのisValid(文字列S){ 場合(s.length()== 0 ){ 戻り 真。 } INT 0 =左; CHAR [] schars = s.toCharArray()。 char型 [] TEMP = 新しい CHAR [s.length()]。 以下のために(int型 i = 0; i)は(s.lengthを<; iは++ ){ 場合(schars [I] == '(' || schars [I] == '{' || schars [I] ==「[ ' ){ TEMP [左 ++] =のschars [I]; } そう{ 場合(左<1 ){ 戻り 偽。 } もし(TEMP [LEFT-1] == '(' ){ 場合(schars [I] == '')){ 左 - 。 } 他{ 戻り 偽。 } } そう であれば(TEMP [LEFT-1] == '{' ){ 場合(schars [I] == '}' ){ 左 - 。 } 他{ 戻り 偽。 } } そう であれば(TEMP [LEFT-1] == '[' ){ 場合(schars [I] == ']' ){ 左 - 。 } 他{ 戻り 偽。 } } } } 戻り左== 0 。 } }