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

专门做湘菜的网站淘宝网页版

专门做湘菜的网站,淘宝网页版,公司网站建设费怎么入账,广州哪家公司做网站前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 11,周六,又开始变的困难了~ 题目详情 [20] 有效的括号 题目描述 20 有效的括号 解题思路 前提:括号匹配 思路:利用栈的后入先出特性&#xf…

前言

思路及算法思维,指路 代码随想录。
题目来自 LeetCode。

day 11,周六,又开始变的困难了~

题目详情

[20] 有效的括号

题目描述

20 有效的括号
20 有效的括号

解题思路

前提:括号匹配
思路:利用栈的后入先出特性,进行匹配。
重点:栈的使用。

代码实现

C语言
bool isValid(char* s) {int len = strlen(s);char stack[len];memset(stack, 0, len);int top = -1;for (int i = 0; i < strlen(s); i++){if ((s[i] == '(') || (s[i] == '[') || (s[i] == '{')){stack[++top] = s[i];}else{if (top < 0){return false;}if (((s[i] == ')') && (stack[top] != '(')) || ((s[i] == ']') && (stack[top] != '[')) || ((s[i] == '}') && (stack[top] != '{'))){return false;}top--;}}if (top >= 0){return false;}return true;
}

可以进一步过滤字符串长度为奇数的情况……

bool isValid(char* s) {int len = strlen(s);if (len % 2 != 0){return false;}char stack[len];memset(stack, 0, len);int top = -1;for (int i = 0; i < strlen(s); i++){if ((s[i] == '(') || (s[i] == '[') || (s[i] == '{')){stack[++top] = s[i];}else{if (top < 0){return false;}if (((s[i] == ')') && (stack[top] != '(')) || ((s[i] == ']') && (stack[top] != '[')) || ((s[i] == '}') && (stack[top] != '{'))){return false;}top--;}}if (top >= 0){return false;}return true;
}

[1047] 删除字符串中的所有相邻重复项

题目描述

1047 删除字符串中的所有相邻重复项
1047 删除字符串中的所有相邻重复项

解题思路

前提:删除相邻重复字母
思路:利用栈的后入先出的特性,进行匹配
重点:注意当前字母需要与栈顶元素比较。

代码实现

C语言
char* removeDuplicates(char* s) {int slen = strlen(s);char *stack = (char *)malloc(sizeof(char) * slen);memset(stack, 0, slen);int top = -1;for (int i = 0; i < slen; i++){if ((top >= 0) && (s[i] == stack[top])){stack[top] = '\0';top--;}else{stack[++top] = s[i];}}return stack;
}

[150] 逆波兰表达式求值

题目描述

150 逆波兰表达式求值
150 逆波兰表达式求值

解题思路

前提:逆波兰表达式
思路:利用栈的后入先出特性实现。
重点:注意数值可能出现负数,自实现string转换数值时,需要考虑负数情况;也可以直接使用atoi函数。

代码实现

C语言
int evalRPN(char** tokens, int tokensSize) {int stack[tokensSize];int top = -1;for (int i = 0; i < tokensSize; i++){// 判断该元素是否为算符if ((strlen(tokens[i]) == 1) && ((tokens[i][0] == '*') || (tokens[i][0] == '/') || (tokens[i][0] == '+') || (tokens[i][0] == '-'))){if (top < 1){return 0;}int val2 = stack[top--];int val1 = stack[top--];int res = 0;if (tokens[i][0] == '*'){res = val1 * val2;}else if (tokens[i][0] == '/'){res = val1 / val2;}else if (tokens[i][0] == '+'){res = val1 + val2;}else{res = val1 - val2;}stack[++top] = res;continue;}// 该元素不为算符,需要注意负数的情况int len = strlen(tokens[i]);int val = 0;for (int j = 0; j < len; j++){if (tokens[i][j] != '-'){val = val * 10 + (tokens[i][j] - '0');}}if (tokens[i][0] != '-'){stack[++top] = val;}else{stack[++top] = 0 - val;}}return stack[top];
}

也可以直接使用atoi函数转换……

int evalRPN(char** tokens, int tokensSize) {int stack[tokensSize];int top = -1;for (int i = 0; i < tokensSize; i++){// 判断该元素是否为算符if ((strlen(tokens[i]) == 1) && ((tokens[i][0] == '*') || (tokens[i][0] == '/') || (tokens[i][0] == '+') || (tokens[i][0] == '-'))){if (top < 1){return 0;}int val2 = stack[top--];int val1 = stack[top--];int res = 0;if (tokens[i][0] == '*'){res = val1 * val2;}else if (tokens[i][0] == '/'){res = val1 / val2;}else if (tokens[i][0] == '+'){res = val1 + val2;}else{res = val1 - val2;}stack[++top] = res;continue;}// 该元素不为算符stack[++top] = atoi(tokens[i]);}return stack[top];
}

今日收获

  1. 栈的使用。
http://www.sczhlp.com/news/92642/

相关文章:

  • 南京领动做网站怎么样宝塔 wordpress
  • 建设银行青海省分行门户网站沧州做公司网页的公司有哪些
  • 深圳网站建设公司首选app外包后期怎么维护
  • 网站开发宣传语如何让网站 被百度k
  • 高质量的合肥网站建设阿里巴巴上怎样做自己的网站
  • 西安最好的网站建设公司做网站被骗预付款怎么办
  • 万网官方网站网站发布文章怎么才能让百度收录
  • 做网站外国的html网站的设计
  • 大学生做家教比较好的网站1688外贸网站
  • 网站制作教程及流程html项目案例实战
  • 产品展示类网站模板福州建设公司名单
  • wang域名的网站洛阳网站推广优化
  • 用代码做家乡网站京东电子商务网站的建设
  • 网站建设移动端官网郑州新闻发布会最新消息今天
  • 湘潭建设网站公司苏州网站开发公司兴田德润放心
  • 生鲜网站建设的总体目标自助建站最大
  • 给一个网站如何做推广wordpress 主页 插件
  • 建设部特种作业证网站查询wordpress小企业主题
  • 网站开发时app打开很慢广州白云区做网站
  • 网站界面设计案例青岛市区商场黄页
  • 网站建设服务商有哪些珠海市官网网站建设平台
  • 网站策划与建设阶段的推广的目标垂直网站内容建设
  • 大气科技类企业公司网站源码山东城市建设职业学院教务网站
  • 做移动网站优化排可以提供排版的网站
  • 网站建设运营的灵魂是什么黄骅市属于沧州吗
  • 海关年检要去哪个网站上做建网站公司销售
  • 中山三水网站建设做网站要执照吗
  • 制作报价网站亚马逊雨林十大恐怖动物
  • 如何创建网站后台凡科做的网站如何绑定域名
  • 建立网站备案需要什么资料广州网站定制