interface Stack {
_items: any
push(element: any): void
pop(): any
top(): any
size(): any
isEmpty(): any
clear(): any
}
//用Symbol添加私有属性
class Stack {
_items: any = Symbol() constructor() {
this._items = []
} push(element: any): void {
this._items.push(element);
} pop(): any {
let r: any = this._items.pop();
return r;
} size(): number {
return this._items.length;
}
top(): number {
return this._items[this.size() - 1];
}
isEmpty(): boolean {
if (this._items.length === 0) {
return true;
}
return false;
}
clear() {
this._items = [];
}
} let newStack = new Stack();
//十进制转换二进制
function devideBy2(num: any): void {
while (num != 0) {
newStack.push(num % 2);
num = num / 2;
num = parseInt(num);
} let num2 = 0; while ((num2 = newStack.pop()) != null) {
console.log(num2)
}
} //const opens = ``
//const closers = `)]}`
//平衡括号 正常方法
/**
function balancedSymbols(symbols:string) {
let index:number = 0;
let balanced:boolean = true;
let symbol:string = symbols[index];
while(index<symbols.length&&balanced) {
if(symbol === "[" || symbol === "("|| symbol === "{") {
newStack.push(symbol);
} else {
switch(symbol) {
case "]": {
if(newStack.pop() != '[') {
return false;
}
break;
}
case "}": {
if(newStack.pop() != '{') {
return false;
}
break;
}
case ")": {
if(newStack.pop() != '(') {
return false;
}
break;
}
}
}
symbol = symbols[++index];
}
return true;
}
*/
//递归实现
function balancedSymbols(symbols: string): any {
if(!symbols.length) {
return true;
}
let symbol: string = symbols.slice(0, 1);
symbols = symbols.slice(1); switch (symbol) {
case '(': case '[': case '{': {
console.log(symbol)
newStack.push(symbol);
break;
}
case ')': {
if (newStack.pop() != '(') {
return false;
}
break;
}
case ']': {
if (newStack.pop() != '[') {
return false;
}
break;
} case '}': {
if (newStack.pop() != '{') {
return false;
}
break;
}
}
return balancedSymbols(symbols);
}
devideBy2(10);
console.log(balancedSymbols('([{])'))

数据结构篇(1) ts实现栈的基本操作和解决相关问题的更多相关文章

  1. 数据结构篇(2) ts实现单循环链表

    JS的class可以通过extends关键字实现类似其他语言的继承效果,比起使用一个extends关键字,在es5中实现继承要复杂一些,可以通过修改原型链的方法实现继承,让一个原型对象等于另一个类型的 ...

  2. 数据结构篇(3)ts 实现双向链表

    如今终于到了双向链表了,此前在Node结构中的prev指针终于派上了用场.由于双向链表多了一个前向指针,所以有些操作和单向链表比较起来反而更加的简单. class DbList extends Cir ...

  3. 数据结构篇(2) ts实现单链表

    interface NodeItem { prev: NodeItem | null next: NodeItem | null data: any } class NodeItem { prev: ...

  4. C++ 栈的基本操作

    // zhan.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namesp ...

  5. 顺序栈的基本操作(C语言)

    由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址  但是这种用法好像C并不 ...

  6. 菜鸟nginx源代码剖析数据结构篇(九) 内存池ngx_pool_t

    菜鸟nginx源代码剖析数据结构篇(九) 内存池ngx_pool_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn ...

  7. 菜鸟nginx源码剖析数据结构篇(九) 内存池ngx_pool_t[转]

    菜鸟nginx源码剖析数据结构篇(九) 内存池ngx_pool_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn. ...

  8. SDUT-3335_数据结构实验之栈与队列八:栈的基本操作

    数据结构实验之栈与队列八:栈的基本操作 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 堆栈是一种基本的数据结构.堆栈具 ...

  9. 菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t

    菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

随机推荐

  1. CF1500D Tiles for Bathroom (递推+大讨论)

    题目大意:给你一个n*n的矩阵,现在问对于每个k\le n,求出所有k*k的子矩阵中,元素种类数不超过q的矩阵个数,n\le 1500, q\le 10 先考虑最暴力的做法: 对于每个格子,求出以它为 ...

  2. KestrelServer详解[1]:注册监听终结点(Endpoint)

    具有跨平台能力的KestrelServer是最重要的服务器类型.针对KestrelServer的设置均体现在KestrelServerOptions配置选项上,注册的终结点是它承载的最重要的配置选项. ...

  3. 深入理解Java虚拟机-HotSpot虚拟机对象探秘

    一.对象的创建过程 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载.解析和初始化过.如果没有,那就先执行相应的类 ...

  4. Spring MVC的异常处理 ?

    可以将异常抛给Spring框架,由Spring框架来处理:我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可.

  5. Django用mongoengine操作mongodb

    最近在写Django项目,使用的是mongodb,虽然Django不支持NoSQL,但是mongoengine可以帮助我们像ORM一样在Django项目中去操作mongodb 推荐一个可视化工具  R ...

  6. 实践中如何优化 MySQL ?

    最好是按照以下顺序优化: 1.SQL 语句及索引的优化 2.数据库表结构的优化 3.系统配置的优化 4.硬件的优化 详细可以查看 阿里 P8 架构师谈:MySQL 慢查询优化.索引优化.以及表等优化

  7. 我们能在 Switch 中使用 String 吗?

    从 Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法 糖.内部实现在 switch 中使用字符串的 hash code. 30.Java 中的构造器链是什么? ...

  8. 10分钟go crawler colly从入门到精通

    Introduction 本文对colly如何使用,整个代码架构设计,以及一些使用实例的收集. Colly是Go语言开发的Crawler Framework,并不是一个完整的产品,Colly提供了类似 ...

  9. (stm32学习总结)—GPIO位带操作

    本章参考资料:<STM32F10X-中文参考手册>存储器和总线构架章节.GPIO 章节,<CM3 权威指南 CnR2>存储器系统章节. 位带简介 位操作就是可以单独的对一个比特 ...

  10. 创建axios拦截器

    上一篇说axios并发的时候有提到 axios的请求统一管理是为了创建拦截器 具体说一下拦截器的创建 import Vue from 'vue'; import axios from 'axios'; ...