100天iOS数据结构与算法实战 Day03 - 栈的算法实战 Valid Parentheses

2019 年 4 月 5 日 CocoaChina

题目描述

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

思路描述

代码实现

  
  
    
  1. - (BOOL)isValid:(NSString *)inputStr

  2. {

  3. //1

  4. if (inputStr.length == 0 || inputStr.length%2 == 1)

  5. {

  6. return NO;

  7. }

  8. //2

  9. DSStack *newStack = [[DSStack alloc] initWithSize:10];


  10. for (int i =0 ; i<inputStr.length; i++)

  11. {

  12. //3

  13. unichar tempChar = [inputStr characterAtIndex:i];

  14. if (tempChar =='(' || tempChar =='{' || tempChar == '[')

  15. {

  16. [newStack push:[NSString stringWithCharacters:&tempChar length:1]];

  17. }

  18. //4

  19. else

  20. {

  21. if (newStack && [self isPairLeftAndRight:[newStack peek] right:[NSString stringWithCharacters:&tempChar length:1]])

  22. {

  23. [newStack popLastObject];

  24. }

  25. else

  26. {

  27. return NO;

  28. }

  29. }

  30. }


  31. //5

  32. return [newStack isEmpty];


  33. }

代码思路描述:

  1. 如果输入字符串是空或者奇数则invalid。

  2. 创建一个新的stack。

  3. 遍历字符串把含有( { [ 字符放到栈里便于匹配。

  4. 如果栈顶字符和tempChar字符匹配则栈顶字符出栈,否则invalid。

  5. 匹配完毕如果stack是空则valid。

复杂度估算

  • Time Complexity: O(n)

  • Space Complexity: O(n) ,由于借助stack存储

Demo

https://github.com/renmoqiqi/100-Days-Of-iOS-DataStructure-Algorithm/tree/master/Day03


作者:人魔七七

链接:https://mp.weixin.qq.com/s/oIsmBrH5RXD0PXtqgds5ng


本公众号转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系本公众号进行修改或删除【联系方式QQ : 3442093904  邮箱:support@cocoachina.com】。文章内容为作者独立观点,不代表本公众号立场。版权归原作者所有,如申请授权请联系作者,因文章侵权本公众号不承担任何法律及连带责任。

---END---

登录查看更多
0

相关内容

Brackets 是一个开源的,适合 web 设计师和前端开发者的编辑器,由 Adobe 创立。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
165+阅读 · 2020年3月27日
知识图谱本体结构构建论文合集
专知会员服务
102+阅读 · 2019年10月9日
ELK跳不过的ES,图解助你掌握内部模型及数据结构
DBAplus社群
76+阅读 · 2019年1月10日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
[机器学习] 用KNN识别MNIST手写字符实战
机器学习和数学
4+阅读 · 2018年5月13日
基于Numpy实现神经网络:反向传播
论智
5+阅读 · 2018年3月21日
动手写机器学习算法:K-Means聚类算法
七月在线实验室
5+阅读 · 2017年12月6日
[DLdigest-8] 每日一道算法
深度学习每日摘要
4+阅读 · 2017年11月2日
Arxiv
6+阅读 · 2018年8月27日
Arxiv
3+阅读 · 2018年2月24日
Arxiv
4+阅读 · 2018年2月13日
Arxiv
5+阅读 · 2017年12月14日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关VIP内容
相关资讯
ELK跳不过的ES,图解助你掌握内部模型及数据结构
DBAplus社群
76+阅读 · 2019年1月10日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
[机器学习] 用KNN识别MNIST手写字符实战
机器学习和数学
4+阅读 · 2018年5月13日
基于Numpy实现神经网络:反向传播
论智
5+阅读 · 2018年3月21日
动手写机器学习算法:K-Means聚类算法
七月在线实验室
5+阅读 · 2017年12月6日
[DLdigest-8] 每日一道算法
深度学习每日摘要
4+阅读 · 2017年11月2日
Top
微信扫码咨询专知VIP会员