难度简单2579
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()" 输出:true
示例 2:
输入:s = "()[]{}" 输出:true
示例 3:
输入:s = "(]" 输出:false
示例 4:
输入:s = "([)]" 输出:false
示例 5:
输入:s = "{[]}" 输出:true
提示:
1 <= s.length <= 104
s
仅由括号'()[]{}'
组成
class Solution {
public boolean isValid(String s) {
char [] stark = new char [s.length()];
int tail = -1;
for(int i = 0;i<s.length();i++)
{
if(tail==-1) //栈为空 先压栈
{
tail++;
stark[tail] = s.charAt(i);
continue;
}
if((s.charAt(i)==')'&& stark[tail]=='(') || (s.charAt(i)==']'&& stark[tail]=='[')||(s.charAt(i)=='}'&& stark[tail]=='{'))
{
tail--;
}
else
{
tail++;
stark[tail] = s.charAt(i);
}
}
if(tail<0) return true;
else return false;
}
}
class Solution {
public boolean isValid(String s) {
if(s.length()%2==1) return false;
//创建一个栈:
char[] stack = new char[s.length()];
int index =0;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)=='(' || s.charAt(i)=='{'||s.charAt(i)=='[')
stack[index++] = s.charAt(i);
else
{
if(index==0) return false;
char a = stack[index-1];
if(s.charAt(i)==')' && a!='(') return false;
if(s.charAt(i)=='}' && a!='{') return false;
if(s.charAt(i)==']' && a!='[') return false;
index--;
}
}
if(index!=0) return false;
return true;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69236.html