leetcode --20. Valid Parentheses
来源:互联网 发布:json 汉字 编辑:程序博客网 时间:2024/06/06 23:50
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.
分析:
给一个包含'(', ')', '{', '}', '[' 和 ']'的字符,如果字符的括弧是正常的方式关闭的,比如"()" 和 "()[]{}" are,否则是无效的,比如"(]" 和 "([)]" 等。
此类问题比较简单,用栈处理,当字符为'(','{','['将字符串中的字符压入栈中, 当字符为')', '}', 和 ']'时弹栈,判断弹出的与当前的匹配,匹配则继续,最后判断栈是否为空,空的话则有效,否则无效。
代码:
import java.util.*;
public class Solution {
public boolean isValid(String s) {
int k= s.length();
if (k%2 != 0) return false;
Stack<Character> ss = new Stack<Character>();//用栈来存储字符
for(char c : s.toCharArray()){//foreach循环
if(c=='{'||c=='('||c=='['){
ss.push(c);
}else if(c==']'){
if(ss.isEmpty()||ss.pop()!='['){
return false;
}
}else if(c==')'){
if(ss.isEmpty()||ss.pop()!='('){
return false;
}
}else if(c=='}'){
if(ss.isEmpty()||ss.pop()!='{'){
return false;
}
}
}
return ss.isEmpty();
}
}
知识点:
简单说下foreach的使用
For-Each循环也叫增强型的for循环,或者叫foreach循环。
For-Each循环是JDK5.0的新特性(其他新特性比如泛型、自动装箱等)。
For-Each循环的加入简化了集合的遍历。
For-Each循环的缺点:丢掉了索引信息。
当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。
语法如下:
for(type element: array)
{
System.out.println(element);
}
例子:
其基本使用可以直接看代码:
代码中首先对比了两种for循环;之后实现了用增强for循环遍历二维数组;最后采用三种方式遍历了一个List集合。
import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ForeachTest{ public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; System.out.println("----------旧方式遍历------------"); //旧式方式 for(int i=0; i<arr.length; i++) { System.out.println(arr[i]); } System.out.println("---------新方式遍历-------------"); //新式写法,增强的for循环 for(int element:arr) { System.out.println(element); } System.out.println("---------遍历二维数组-------------"); //遍历二维数组 int[][] arr2 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} ; for(int[] row : arr2) { for(int element : row) { System.out.println(element); } } //以三种方式遍历集合List List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); System.out.println("----------方式1-----------"); //第一种方式,普通for循环 for(int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } System.out.println("----------方式2-----------"); //第二种方式,使用迭代器 for(Iterator<String> iter = list.iterator(); iter.hasNext();) { System.out.println(iter.next()); } System.out.println("----------方式3-----------"); //第三种方式,使用增强型的for循环 for(String str: list) { System.out.println(str); } }}
- LeetCode 20. Valid Parentheses
- [LeetCode] 20.Valid Parentheses
- LeetCode --- 20. Valid Parentheses
- LeetCode 20.Valid Parentheses
- [Leetcode] 20. Valid Parentheses
- 【leetcode】20. Valid Parentheses
- [leetcode] 20.Valid Parentheses
- [leetcode] 20. Valid Parentheses
- Leetcode 20. Valid Parentheses
- 20. Valid Parentheses LeetCode
- leetcode 20. Valid Parentheses
- 【LeetCode】20. Valid Parentheses
- leetcode 20. Valid Parentheses
- leetcode 20. Valid Parentheses
- LeetCode-20.Valid Parentheses
- LeetCode *** 20. Valid Parentheses
- LeetCode 20. Valid Parentheses
- leetcode-20. Valid Parentheses
- Android后退事件处理
- 剖析Yarn框架
- 给深度学习入门者的Python快速教程
- POJ1821-Fence
- centos7下使用extundelete恢复误删数据
- leetcode --20. Valid Parentheses
- Codeforces】-445C-DZY Loves Physics
- 将javaBean转换成XML
- GCC学习日志
- worldwind 地图显示字体修改
- C++删除单链表中值重复的结点
- spring学习----aop配置demo
- HDU 3247-Resource Archiver(AC自动机+BFS+DP)
- 学习Spring必学的Java基础知识(2)----动态代理