当前位置:首页 > 代码相关 > 正文内容

C# Stack堆栈

admin6年前 (2020-06-14)代码相关10691

Stack代表了一个先入后出的对象集合。有以下常用方法:

表 3
Clear()

从 Stack 中移除所有对象。

Contains(Object)

确定某元素是否在 Stack 中。

CopyTo(Array, Int32)

从指定的数组索引处开始,将 Stack 复制到现有的一维 Array 中。

Peek()

返回位于 Stack 顶部的对象但不将其移除。

Pop()

删除并返回 Stack 顶部的对象。

Push(Object)

在 Stack 的顶部插入一个对象。

ToArray()

将 Stack 复制到新数组中。

堆栈的使用案例,当然这个案例用的是泛型Stack:有效的括号匹配

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。


有效字符串需满足:


左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。


来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/valid-parentheses


public bool IsValid(string s)
  {
      //遇到左括号一律推入栈中
      //遇到右括号,将栈顶部元素拿出,如果不匹配则返回false,匹配则继续

      Stack<char> stack = new Stack<char>();
      if (s == "")
      {
          return true;
      }

      for (int i = 0; i < s.Length; i++)
      {
          if (s[i] == '(' || s[i] == '[' || s[i] == '{')
          {
              stack.Push(s[i]);
          }
          if (s[i] == ')')
          {
              if (stack.Count == 0 || stack.Pop() != '(')
              {
                  return false;
              }

          }
          if (s[i] == '}')
          {
              if (stack.Count == 0 || stack.Pop() != '{')
              {
                  return false;
              }

          }
          if (s[i] == ']')
          {
              if (stack.Count == 0 || stack.Pop() != '[')
              {
                  return false;
              }

          }

      }



      if (stack.Count == 0)
      {
          return true;
      }
      else
      {
          return false;
      }

  }


扫描二维码推送至手机访问。

版权声明:本文由lovedm.club发布,如需转载请注明出处。

本文链接:https://lovedm.club/?id=55

分享给朋友:

“C# Stack堆栈” 的相关文章

C# 属性,get,set使用

属性反映了状态,是对字段的自然扩展。下面的代码,有一个学生类,类中有年龄属性,通过get,set对年龄进行值的获取与设置,同时对年龄进行约束,使值控制在0-120之间,否则抛出异常信息。namespace _20200324_2 {     cl...

C# 正则表达式(1)

C# 正则表达式(1)

用于匹配输入文本的模式string s = "this is a test!"; string res = Regex.Replace(s, "^",&nbs...

C# 测量运行时间

使用Stopwatch类进行运行时间的监测要使用 System.Diagnostics 命名空间方法表 4Reset()停止时间间隔测量,并将运行时间重置为零。Restart()停止时间间隔测量,将运行时间重置为零,然后开始测量运行时间。Start()开始或继续测量某个时间间隔的运行时间。...

C# 返回值是接口的方法

今天写PIE二次开发加载栅格数据的时候发现类中方法的返回值是接口,之前没怎么写过,在此记录一下。在例子中设计一个接口 ICalculate ,接口中有两个方法, Add() 和 Div() 分别为加法和减法的功能,均有两个参数,参数和返回值的类型都是int类型。设计一个名为Calculat...

C语言malloc()函数

C语言中malloc()函数,用于分配所需的内存,并返回一个指向该内存的指针。注意这是C的标准库函数,不是C的关键字,在<stdlib.h>头文件下。函数声明: void *malloc(size_t size)其中,size是要分配的内存的大小,单位是字节。返回一个指针 ,指向已分配大...