栈
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
解法:用栈Stack。
class Solution {
public boolean isValid(String s) {
int len=s.length();
if(len%2 ==1){
return false;
}
Stack<Character> stack = new Stack();
for( int i =0; i< len; i++){
if(s.charAt(i) =='(' || s.charAt(i) =='{' || s.charAt(i) =='['){
stack.push(s.charAt(i));
}else{
if(stack.isEmpty()){
return false;
}
}
if(s.charAt(i) ==')'){
char c = stack.pop();
if(c !='('){
return false;
}
}
if(s.charAt(i) =='}' ){
char c = stack.pop();
if(c !='{'){
return false;
}
}
if(s.charAt(i) ==']' ){
char c = stack.pop();
if(c !='['){
return false;
}
}
}
return stack.isEmpty();
}
}给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。
请注意,返回的 规范路径 必须遵循下述格式:
始终以斜杠
'/'开头。两个目录名之间必须只有一个斜杠
'/'。最后一个目录名(如果存在)不能 以
'/'结尾。此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含
'.'或'..')。
返回简化后得到的 规范路径 。
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack()初始化堆栈对象。void push(int val)将元素val推入堆栈。void pop()删除堆栈顶部的元素。int top()获取堆栈顶部的元素。int getMin()获取堆栈中的最小元素。
解:这是一个辅助栈,用来存储当前的最小值
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。
解:用栈来存放运算符。
最后更新于
这有帮助吗?