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.

简单的堆栈问题,代码如下:

 class Solution {
public:
bool isValid(string s) {
if(!s.size())
return true;
char c;
stack<char> stk;
for(int i = ; i < s.size(); ++i){
if(s[i] == '[' || s[i] == '{' || s[i] == '('){
stk.push(s[i]);
continue;
}else if(s[i] == ']'){
if(stk.empty())
return false;
c = stk.top();
stk.pop();
if(c != '[')
return false;
}else if(s[i] == '}'){
if(stk.empty())
return false;
c = stk.top();
stk.pop();
if(c != '{')
return false;
}else{
if(stk.empty())
return false;
c = stk.top();
stk.pop();
if(c != '(')
return false;
}
}
if(stk.empty())
return true;
return false;
}
};

简单一点的话可以使用下面这种方式:

 bool ValidParentheses(string s)
{
if (!s.size())
return true;
stack<char> stk;
map<char, char> m;
m['('] = ')';
m['['] = ']';
m['{'] = '}';
for (auto c : s){
if (c == '(' || c == '[' || c == '{'){
stk.push(c);
}
else if (c == ')' || c == ']' || c == '}'){
if (stk.empty())
return false;
if (c == m[stk.top()])
stk.pop();
else
return false;
}
}
if (stk.empty())
return true;
return false;
}

java版本代码如下所示:

 public class ValidParentheses {
public static void main(String[] args) {
// TODO Auto-generated method stub
ValidParentheses validParentheses = new ValidParentheses();
String string = new String("[]{}(){[]}");
System.out.println("" + validParentheses.ValidParentheses(string));
} boolean ValidParentheses(String str){
if(str.length() == 0)
return true;
Stack<Character> stk = new Stack<Character>();
char [] parentheses = str.toCharArray();
for(char c : parentheses){
if(c == '(' || c == '{' || c == '['){
stk.push(c);
}else if(c == ')'){
if(stk.empty() || stk.pop() != '(')
return false;
}else if(c == '}'){
if(stk.empty() || stk.pop() != '{')
return false;
}else if(c == ']'){
if(stk.empty() || stk.pop() != '[')
return false;
}
}
if(stk.empty())
return true;
return false;
}
}

最新文章

  1. 爆一个VS2015 Update1更新带来的编译BUG【已有解决方案】
  2. [Leetcode] Permutations II
  3. sql数剧操作语言
  4. 2014 网选 5014 Number Sequence(异或)
  5. [CareerCup] 8.7 Chat Server 聊天服务器
  6. jquery动画效果---animate()--滚屏
  7. 关于python的环境变量问题
  8. android学习日记16--GridView(网格视图)
  9. 关于Spring的Controller及Struts的Action的多线程的注意
  10. Tomcat类加载器
  11. Golang http 服务器
  12. 在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?
  13. VsCode 使用专用编程字体FiraCode
  14. 2059-authentication plugin &#39;caching_sha2_password&quot;cnnot bt loaded :mysql8.0数据库链接不上:
  15. cookie 处理 以及模拟登陆
  16. python 多文件知识
  17. C# 使用lambda表达式过滤掉数组中的空字符串
  18. idea列表
  19. python3.6 连接mysql数据库
  20. Win32 Debug &amp; Release

热门文章

  1. 安卓项目eclipse有用教程:设置应用名字和图标、屏幕、签名、真机调试、clean、logcat、json解析
  2. ionic真机调试Android报错 - could not read ok from ADB Server * failed to start daemon * error: cannot connect to daemon
  3. Java并发(1):synchronized
  4. PL/SQL编程—变量
  5. 杭电1023Train Problem II
  6. SVN如何切换用户对代码进行操作
  7. linux命令(6/9):watch命令
  8. 使用Linq to XML 修改app.config
  9. Spring 之 @ComponentScan以及mock Spring MVC
  10. Python3.x:ConfigParser模块的使用