当前位置: 首页 > news >正文

巴中做网站企业网页设计公司

巴中做网站,企业网页设计公司,html怎么添加图片,wordpress seo 百度一.前言 如果想要使用C语言来解决这道题——有效的括号:https://leetcode.cn/problems/valid-parentheses/description/我们必须要借用上一篇我们所讲的内容——栈的实现:https://blog.csdn.net/yiqingaa/article/details/138923750?spm1001.2014.3001.…

一.前言

如果想要使用C语言来解决这道题——有效的括号:https://leetcode.cn/problems/valid-parentheses/description/我们必须要借用上一篇我们所讲的内容——栈的实现:https://blog.csdn.net/yiqingaa/article/details/138923750?spm=1001.2014.3001.5502

因为在C语言环境下,力扣不会主动帮你实现栈,需要用户自己手动创建栈。但是在C++环境下,力扣会主动为我们实现栈。

2.正文 

1.1题目描述

1.2题目分析

1.21 题目想让用户干什么

这道题为我们用户提供了一个字符串s。我们需要编写程序来判断所给字符串s中,相同类型的左括号与右括号是否一 一匹配。如果匹配正确就返回true。匹配不正确就返回false。

 1.22 如何求解题目

这道题我们可以运用栈的知识面来求出这道题。

我们可以先创建一个栈变量st,然后让字符串s逐一遍历字符,如果遍历过程中字符是‘(’    ‘[’   ‘{’   都可以将它们尾插到我们栈当中。如果在遍历过程中不是‘(’    ‘[’   ‘{’ ,而是‘)’    ‘]’   ‘}’我们可以调用之前写好的函数功能——取出栈顶元素( STDataType STTop(ST* ps) 这里的SLDataType是我们栈数据类型,可能是int、char或者其他类型。),调出可能之前存入栈的字符‘(’    ‘[’   ‘{’ ,并与遍历字符作对比。这里我暂且将取出栈顶的元素用变量top接受。我们就有取出栈顶元素,与现在遍历字符的关系:

if ((top == '(' && *s != ')') ||

            (top == '{' && *s != '}') ||

            (top == '[' && *s != ']'))

满足上面其中一个条件我们就可以说明,相同类型的左括号与右括号没有一 一匹配。我们直接返回false即可。

值得注意的是:在返回true,或者false之前,都要对栈进行销毁处理——void STDestroy(ST* ps)

1.3代码实现

typedef int STDataType;
struct Stack
{STDataType* a;int top;int capacity;
};
typedef struct Stack ST;
void STInit(ST* ps);//栈的初始化
void STDestroy(ST* ps);//栈的销毁void STPush(ST*PS,STDataType x);//入栈
void STPop(ST* ps);//出栈STDataType STTop(ST* ps);//取栈顶的数据bool STEmpty(ST*ps);//判空int STSize(ST* PS);//获取数据个数
void STInit(ST *ps)//栈的初始化
{assert(ps);ps->a = NULL;ps->capacity = ps->top = 0;
}
void STDestroy(ST* ps)//栈的销毁
{assert(ps);free(ps->a);ps->a = NULL;ps->top = ps->capacity = 0;
}
void STPush(ST* ps, STDataType x)//入栈
{assert(ps);if (ps->capacity == ps->top){int newcapacity = ps->capacity == 0 ? 10 : ps->capacity*2;STDataType* tmp = (STDataType*)realloc(ps->a, newcapacity * sizeof(STDataType));if (tmp == NULL){perror("realloc fail!");return;}                ps->a = tmp;ps->capacity = newcapacity;}ps->a[ps->top] = x;ps->top++;
}
void STPop(ST* ps)//删除栈顶元素
{assert(ps);assert(ps->a);ps->top--;
}
STDataType STTop(ST* ps)//取出栈顶元素
{assert(ps);assert(ps->top >= 0);return ps->a[ps->top-1];
}
bool STEmpty(ST* ps)//判断栈内元素是否为空
{assert(ps);if (ps->top == 0)return true;return false;
}
int STSize(ST* ps)//获取数据个数
{assert(ps);return ps->top ;
}
bool isValid(char* s) 
{ST st;
STInit(&st);
while (*s)
{if (*s == '(' || *s == '{' || *s == '['){STPush(&st, *s);}else{if(STEmpty(&st))//这一步是必须的,因为如果栈为空且*s是')' ']' '}',说明
//题目给出的字符可能是这样的“)”、“(){}]”。类似这种情况都是不符合题意的情况。return false;char top = STTop(&st);STPop(&st);//这里一定要进行尾部栈顶元素删除,以便遍历字符和栈内字符能够对的上if ((top == '(' && *s != ')') ||(top == '{' && *s != '}') ||(top == '[' && *s != ']')){return false;}}++s;
}
if (st.top != 0)return false;
STDestroy(&st);
return true;
}

三.结言 

今天的题目分享就到此结束了,觉得对你有所帮助的同学,能不能求一个三连。

http://www.hkea.cn/news/855864/

相关文章:

  • 石家庄网站建设全包免费推广网站2024
  • 阿里云网站备案时间无锡seo网站管理
  • 景点介绍网站模板重庆百度关键词推广
  • 做亚马逊网站费用吗曲靖新闻今日头条
  • bing 网站管理员2023今日新闻头条
  • 深圳市做网站前十强百度一下搜索网页
  • 做执法设备有哪些网站国家免费培训学校
  • 顺德乐从有做阿里巴巴的网站吗杭州网站设计
  • 做英文网站 用阿里服务器行吗b2b网站推广排名
  • 搭建网站做淘宝客网赌怎么推广拉客户
  • 网站建设前台与后台最新技术2021最新免费的推广引流软件
  • 做网站基本语言淘宝如何提升关键词排名
  • wordpress怎样分类目录添加标签seo文章范文
  • 订阅号可以做网站吗南宁seo外包服务商
  • 邢台哪儿做网站便宜宁波 seo排名公司
  • 深圳网站优化咨询网上广告怎么推广
  • 网站右击无效是怎么做的网络营销产品
  • 中宣部网站政治建设网站服务器是什么意思
  • 淮安网站定制徐州seo外包公司
  • 嘉兴类网站系统总部网站建设技术解决方案
  • 做网站的教科书外包网络推广公司推广网站
  • 模板名字 wordpress优化大师如何删掉多余的学生
  • 3d网站建设制作百度关键词优化手段
  • 新手做那些网站比较好东莞企业网站排名
  • 欧美风格网站360指数
  • 优秀网站建设公司电话下列哪些店铺适合交换友情链接
  • 58同城乌鲁木齐网站建设重庆网站到首页排名
  • wordpress知言主题山东服务好的seo公司
  • 旅游商务平台网站建设功能需求关键词排名查询官网
  • 做网站要搭建本地服务器么微商引流被加方法精准客源