数据结构篇(1) ts实现栈的基本操作和解决相关问题
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实现栈的基本操作和解决相关问题的更多相关文章
- 数据结构篇(2) ts实现单循环链表
JS的class可以通过extends关键字实现类似其他语言的继承效果,比起使用一个extends关键字,在es5中实现继承要复杂一些,可以通过修改原型链的方法实现继承,让一个原型对象等于另一个类型的 ...
- 数据结构篇(3)ts 实现双向链表
如今终于到了双向链表了,此前在Node结构中的prev指针终于派上了用场.由于双向链表多了一个前向指针,所以有些操作和单向链表比较起来反而更加的简单. class DbList extends Cir ...
- 数据结构篇(2) ts实现单链表
interface NodeItem { prev: NodeItem | null next: NodeItem | null data: any } class NodeItem { prev: ...
- C++ 栈的基本操作
// zhan.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namesp ...
- 顺序栈的基本操作(C语言)
由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址 但是这种用法好像C并不 ...
- 菜鸟nginx源代码剖析数据结构篇(九) 内存池ngx_pool_t
菜鸟nginx源代码剖析数据结构篇(九) 内存池ngx_pool_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn ...
- 菜鸟nginx源码剖析数据结构篇(九) 内存池ngx_pool_t[转]
菜鸟nginx源码剖析数据结构篇(九) 内存池ngx_pool_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn. ...
- SDUT-3335_数据结构实验之栈与队列八:栈的基本操作
数据结构实验之栈与队列八:栈的基本操作 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 堆栈是一种基本的数据结构.堆栈具 ...
- 菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t
菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...
随机推荐
- tea加密算法及其变种的研究
tea 介绍 "TEA" 的全称为"Tiny Encryption Algorithm" 是1994年由英国剑桥大学的David j.wheeler发明的. T ...
- Linux上如何设置nginx开机启动
连接上linux后输入以下命令--vim /etc/init.d/nginx 然后在这个空文件写入下面内容: 保存好后,修改下该文件权限--chmod 777 /etc/init.d/nginx 然后 ...
- Jinkins流水线脚本使用curl命令调用服务接口,并且使用url传参。
curl http://xxx.xx.xx.xx:xxxx/jenkins/publish?fileName=${fileName}&tag_name=${tag_name} 如图调用不符合c ...
- SpringMvc用什么对象从后台向前台传递数据的?
通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前台就可以通过el表达式拿到.
- Jakarta Java Mail属性参数配置
前言 Jakarta Mail网址:https://eclipse-ee4j.github.io/mail SMTP协议可匹配的属性:https://eclipse-ee4j.github.io/ma ...
- java中的ThreadLocal-learning
为什么需要ThreadLocal 多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性. 而线程安全是指 当多个线程访问某个方法时 ...
- 在虚拟机里面安装mysql
https://dev.mysql.com/downloads/repo/yum/ 首先到网站里面下载 mysql80-community-release-el7-3.noarch.rpm 通过xft ...
- JavaScript 焦点事件
焦点事件,当一个元素(比如链接或表单)得到或失去焦点时发生. 实例: 1 <!DOCTYPE html> 2 <html lang="en"> 3 < ...
- Python - 分支循环、可迭代对象与迭代器
- (stm32f103学习总结)—stm32中断系统
一.NVIC 介绍 NVIC 英文全称是 Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,它属于 M3 内核的一个外设,控制着芯片的中断相关功 ...