数据结构与算法之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 }

 

转载于:https://www.cnblogs.com/outerspace/p/10258250.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值