「コーディングインタビューガイド」 - 有効性と括弧の中で最も長い文字列の有効長

[ タイトル ]

  文字列strを考えると、総合的な判断は、有効な文字列のブラケットではありません

  例えば、STR = "()"、trueを返し、STR = "(()())"、trueを返し、STR = "(())"、trueを返します。

       STR = "())"、falseを返す; STR = "()("、falseを返す; STR = "()A()"、falseを返します。

俺の:

1つの     インポートjava.util.Stackを。
2  
3      公共 ブールmy_isValid(文字列str)
 4      {
 5          であれば(STR == NULL || str.equals( "" ))
 6          {
 7              リターン 8          }
 9  
10          のchar [] CSTR = str.toCharArray()。
11          スタック<文字>スタック= 新しいスタック<> ();
12          のために文字C:CSTR)
 13          {
 14              であれば(C == '('15              {    
 16                  stack.push(C);
17              }
 18              そう なら(C == '') 19              {
 20                  であれば(stack.empty())
 21                  {
 22                      リターン 23                  }
 24                  stack.pop()。
25              }
 26              他の
27              {
 28                  リターン 29              }
 30          }
 31          リターンstack.empty()?;
32      }

時間の複雑さ:O(N)、空間的複雑:O(N)

 

左教師:

1      パブリック ブールのisValid(文字列STR)
 2      {
 3。         IF(STR == NULL || str.equals( "" ))
 4。         {
 5。             復帰 はfalse ;
 6          }
 7。 
8。         CHAR [] =のChas str.toCharArray();
 9          INT 0 = COUNT;      //は単にカウンタセット
10の         ためのチャーC:チャズ)
 。11          {
 12れる             IF(= C '(' && = C ')' !! 13である             {
 14                  リターン ;
15              }
 16              であれば(C == ')&& --count <0 17              {
 18                  リターン 19              }
 20              であれば(C == '(' 21              {
 22                  カウント++ ;
 23              }
 24          }
 25  
26          戻りカウント== 0 ;
 27      }

時間計算量:O(N)、空間的複雑:O(1)

 

[詳細設定]タイトル

  ブラケット文字列strを考えると、最も長い部分文字列の有効ブラケットを返します。

  例えば、STR = "(()())"、6を返し、STR = "())"、2に戻り、STR = "()(()()("、4を返します

 

 

 

出典:左チェンユン先生「プログラマーコードインタビューガイド」

おすすめ

転載: www.cnblogs.com/latup/p/10994537.html