アルゴリズムについての2つの顔の質問

図1に示すように、文字列が与えられると、文字列は文字の4種類のみ知られている「(」「)」、「[」、「]」のブラケットが含まれ、必要:プログラム、ランダム入力の文字列を書き込み、それがマッチングブラケットか否かが判断されます

例: 

入力: "()"

戻る:「真」

入力します。「(]」

戻る:「偽」

入力: "()[()]"

戻る:「真」

入力: " ()()()]([] [])[()[[[[]]]]] "

戻る:「真」

1  パッケージTEST1。
2  
3  インポートjava.util.ArrayListの。
4  インポートjava.util.Listに。
5  
6  パブリック クラスTestStack {
 7  
8      プライベートリスト<文字>要素= 新規のArrayList <> ();
9  
10      プライベート ボイド(文字O){で
 11          .elements.add(O)
12      }
 13  
14      プライベート文字アウト(){
 15          int型の長さ= この.elements.size()。
16          もし(長さ> 0 ){
 17              リターン elements.remove(長さ- 1 )。
18          }
 19          リターン ヌル20      }
 21  
22      公共 int型のサイズ(){
 23          リターン この.elements.size()。
24      }
 25  
26      パブリック ブール有効な(文字列str){
 27          この.elements.clear()。
28          であれば(STR =!ヌル && str.length()> 0 ){
 29              のchar []文字= str.toCharArray()。
30              のためのチャーC:文字){
 31                  チャー left1 = '(' ;
 32                  もし(C == left1){
 33                      この.IN(C);
 34                  }
 35                  チャー RIGHT1 = '[' 36                  であれば(C == RIGHT1){
 37                      この.IN(C);
 38                  }
 39                  チャー left2 = '');
40                  もし(C == {left2)
 41                      チャー outElement = の.out()。
42                      ブールR = outElement == left1。
43                      であれば(!R){
 44                          リターン 45                      }
 46                  }
 47                  チャー right2 = ']' 48                  もし(C == {right2)
 49                      チャー outElement = の.out()。
50                      ブール R = outElement == RIGHT1。
51                      であれば(!R){
 52                          リターン 53                      }
 54                  }
 55             }
 56          }
 57          リターン この .elements.size()== 0 58      }
 59 }
1  パッケージTEST1。
2つの 
3  パブリック クラスTestDemo {
 4      パブリック 静的 ボイドメイン(文字列[]引数){
 5          文字列STR1 = "()" 6          文字列STR2 = "[]" 7          文字列STR3 = "(" ;
 8          文字列STR4 = "((()" ;
 9          文字列STR5 = "()()]" ;
 10          文字列化11 = "([)]" ;
 11          文字列STR7 =「( )[()()]([] [])[()[[[[]]]]]」 
新しいTestStack();
14          のSystem.out.println(STR1 + ":" + testStack.valid(0009))。
15          のSystem.out.println(STR2 + ":" + testStack.valid(STR2))。
16          のSystem.out.println(STR3 + ":" + testStack.valid(STR3))。
17          のSystem.out.println(STR4 + ":" + testStack.valid(STR4))。
18          のSystem.out.println(STR5 + ":" + testStack.valid(化5))。
19          のSystem.out.println(化6 + ":" + testStack.valid(化6))。
20          のSystem.out.println(STR7 + ":" + testStack.valid(化7))。
 

 

2.与えられた二つのアレイ、0よりも大きい二つの配列の長さ(2つの配列の長さは同じでも異なっていてもよい)、及び各々が上昇要件に従ってソートされている2つのアレイは、新しいアレイを形成するためにマージ、及び並べ替えを必要としない、新しいアレイは、昇順に従って配置されています

1  パッケージTEST2。
2  
3  インポートjava.util.Arrays。
4つの 
5  パブリック クラスTestDemo {
 6      パブリック 静的 ボイドメイン(文字列[]引数){
 7          INT [] ARR1 = {1、3、5、9、15 }。
8          INT [] ARR2 = {2、5、7、8、12、13、19 }。
9  //         INT [] ARR1 = {1、2、3、4}。
10  //         INT [] ARR2 = {1、2、3}。
11  //         INT [] ARR1 = {-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1 、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1、-1}。
12 //         INT [] ARR2 = {1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、 1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1}。
13  
14          のint [] newArr = 新しい INT [arr1.length + arr2.length]。
15          のint POINT1 = 0 16          int型ポイント2 = 0 17  
18          のためにint型 i = 0; iは<newArr.length; iは++ ){
 19              であれば(POINT1> = arr1.length &&ポイント2 < arr2.length){
 20                  newArr [I] = ARR2 [ポイント2 ++ ]。
21                  続け;
22             }
 23              であれば(POINT1 <arr1.length &&ポイント2> = arr2.length){
 24                  newArr [I] = ARR1 [POINT1 ++ ]。
25                  続け;
26              }
 27              int型の結果= Integer.compare([POINT1] ARR1、ARR2 [ポイント2])。
28              スイッチ(結果){
 29                  ケース -1 30                      newArr [I] = ARR1 [POINT1]。
31                      POINT1 ++ ;
32                      ブレーク;
33                  ケース 0 34                     newArr [I ++] = ARR1 [POINT1]。
35                      newArr [I] = ARR2 [ポイント2]。
36                      POINT1 ++ ;
37                      ポイント2 ++ ;
38                      ブレーク;
39                  ケース 1 40                      newArr [I] = ARR2 [ポイント2]。
41                      ポイント2 ++ ;
42                      ブレーク;
43              }
 44          }
 45          のSystem.out.println(Arrays.toString(newArr))。
46      }
 47 }

 

おすすめ

転載: www.cnblogs.com/wgbs25673578/p/11456213.html