括号匹配——2017华为招聘机试题
来源:互联网 发布:查看centos系统版本 编辑:程序博客网 时间:2024/06/08 09:09
给定一个字符串,里边可能包含“()”、"{}"、“[]”三种括号,请编写程序检查该字符串的括号是否成对出现,且嵌套关系正确。输出:true:代表括号成对出现并且嵌套正确,或字符串无括号字符,false:未正确使用括号字符。
分析:这个题目,如果有做过较多笔试题目的应该知道,简单的采用一个栈的特性,就能解决,左括号栈顶字符必须和第一个入栈的右括号字符匹配;
#include "stdafx.h"#include <stack>//直接用栈的特性来解答bool CheckCorrect(const char* v_sz){std::stack<char> st;int iLen = strlen(v_sz);for(int i = 0; i < iLen; ++i){if(v_sz[i] == '(' || v_sz[i] == '[' || v_sz[i] == '{'){st.push(v_sz[i]);}if(v_sz[i] == ')') //出现左括号,则此时栈顶为右括号则匹配{if(!st.empty() && st.top() == '('){st.pop();}else{return false;}}if(v_sz[i] == ']'){if(!st.empty() && st.top() == '['){st.pop();}else{return false;}}if(v_sz[i] == '}'){if(!st.empty() && st.top() == '{'){st.pop();}else{return false;}}}//栈空证明全部匹配完成,或未存在括号字符if(st.empty()){return true;}return false;}int _tmain(int argc, _TCHAR* argv[]){bool bRet = CheckCorrect("(1+1)/2");printf("CheckCorrect:%d\n", bRet == true ? 1 : 0);system("pause");return 0;}
阅读全文
0 0
- 括号匹配——2017华为招聘机试题
- 华为机试题二括号的匹配
- 华为机试——括号匹配
- 华为机试—括号匹配
- 华为机试—括号匹配判断[去多余括号]
- 打印顺序——2017华为招聘机试题
- 华为机试——字符串中括号是否匹配
- 华为校园招聘机试题
- 华为机试之括号匹配
- 华为机试练习---括号匹配问题
- 华为机试之括号匹配
- 华为2014校园招聘的机试题目解答——字符串压缩
- 算法思维——字符串压缩程序(华为2014校园招聘的机试题目)
- (0903)2013华为校园招聘机试题
- 2013华为校园招聘机试题
- 2013华为校园招聘机试题1
- 2014届华为校园招聘机试题
- 2013届华为校园招聘机试题
- no session found for current thread异常
- [bzoj3566][SHOI2014]概率充电器 树形DP+期望DP
- android连接mysql数据库
- ip地址
- 使用Windows控制台编译和运行包package
- 括号匹配——2017华为招聘机试题
- Java中“==”与equals 的区别
- 导航栏切换导航条的移动
- spring实现可动态修改时间定时任务
- Linux网络编程:进程池 + CGI服务器
- 区块链安全与升级
- iOS8.4系统下关于点击UITextField闪退问题
- C# 代码风格要求
- Haproxy+keepalived负载均衡配置