1.基础知识
- 栈也是一种线性结构
- 相比数组,栈对应的操作是数组的子集
- 只能从一端添加元素,也只能从一端取出元素。
- 这一端称为栈顶。
- 后进先出(LIFO)
2.栈的应用
无处不在的Undo操作(撤销)
-
程序调用的系统栈
3.栈的实现
4.Stack应用
给定一个只包括
'('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
import java.util.Stack;
public class IsValidClass {
public boolean isValid(String s) {
if (s==null||s.isEmpty()==true)
return true;
char[] charArray = s.toCharArray();
Stack<Character> stack=new Stack<>();
for (int i=0;i<charArray.length;i++){
char ch=charArray[i];
if (ch=='('||ch=='['||ch=='{')
stack.push(ch);
else if (stack.isEmpty()||(!((ch==')'&&stack.pop()=='(')||(ch==']'&&stack.pop()=='[')||(ch=='}'&&stack.pop()=='{'))))
return false;
}
if (stack.isEmpty())
return true;
return false;
}
}