数据结构与算法之Stack(栈)的应用——in dart

  参考教科书上的一个应用例子,用栈来分析一行输入中的括号brackets是否匹配。用stdin读取用户输入,并输出检查结果。exit 退出。

注意这行代码:

import 'stack.dart';
// 需要与上一个Stack的例子在同一个文件夹下。
 1 import 'dart:io';
 2 import 'stack.dart';
 3 
 4 void main() {
 5   var ins = stdin.readLineSync();
 6   while (ins != 'exit') {
 7     print(check(ins));
 8     ins = stdin.readLineSync();
 9   }
10 }
11 
12 bool check(String ins) {
13   var stack = Stack<String>(ins.length);
14   for (var i = 0; i < ins.length; i++) {
15     switch (ins[i]) {
16       case '{':
17       case '[':
18       case '(':
19         stack.push(ins[i]);
20         break;
21       case ')':
22         if (stack.isEmpty || stack.pop() != '(') return false;
23         break;
24       case ']':
25         if (stack.isEmpty || stack.pop() != '[') return false;
26         break;
27       case '}':
28         if (stack.isEmpty || stack.pop() != '{') return false;
29         break;
30       default:
31         break;
32     }
33   }
34   return stack.isEmpty;
35 }

 

posted on 2019-01-11 23:45  Burkut  阅读(562)  评论(0编辑  收藏  举报