当前位置: 首页 > 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.hkea.cn/news/712722/

相关文章:

  • 帝国cms做淘宝客网站网页设计用什么软件
  • 营销型网站建设的优缺点视频优化软件
  • 珠海响应式网站建设推广公司网络营销发展方案策划书
  • 中国人自己的空间站每日英语新闻
  • 教师可以做网站吗seo常用工具包括
  • 武山建设局网站什么是seo
  • 做文案需要用到的网站全网模板建站系统
  • 苏州乡村旅游网站建设策划书网站建设百度推广
  • 12380网站建设情况总结百度浏览器入口
  • 直播网站开发要多久排行榜前十名
  • 网站备案完才能建站吗企业建站公司
  • 网站开发外包合同西安网站优化公司
  • 2022网页设计尺寸规范和要求怎么做seo关键词优化
  • 北京大学两学一做网站十大收益最好的自媒体平台
  • 网站开发服务费企业网站建设的一般要素
  • 台州企业网站制作公司郴州网站推广
  • 如何做移动端网站邮件营销
  • 网站制作佛山crm管理系统
  • 网站综合营销方案设计网页设计教程
  • 东莞做网站制作宁波技术好的企业网站制作
  • 广州做网站公司哪家好如何注册一个网站
  • 网站备案协议书互联网营销师证书含金量
  • 广州企业网站建设报价免费推广网站大全
  • 宁波网站排名怎么提交网址让百度收录
  • 杭州 手机网站建设活动营销
  • 加网络网站建设工作室做一个企业网站大概需要多少钱
  • 张家港优化网站seo百度网盘下载
  • 烟台有没有做网站网站安全
  • 网站建设与制作设计公司惠州seo代理商
  • 东营新闻网今日头条常州网站seo