算法内容
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
示例 4:
输入:s = “([)]”
输出:false
示例 5:
输入:s = “{[]}”
输出:true
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
算法思想
该算法比较简单,判断一段字符串是否为有效括号。这里用到了栈的思想,通过栈来辅助我们完成该算法题。该题还是通过图片直观显示如何解决该题。
整体算法
public class Day_18 {
static Scanner input=new Scanner(System.in);
public static boolean isValid(String s) {
char [] num=new char[s.length()];
int length=0;
int i=0;
for (i = 0; i < s.length(); i++) {
if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{'){
num[length]=s.charAt(i);
length++;
}else{
if (length>0){
--length;
}else {
return false;
}
if(s.charAt(i)==')'&&num[length]!='('){
return false;
}else if(s.charAt(i)==']'&&num[length]!='['){
return false;
}else if(s.charAt(i)=='}'&&num[length]!='{'){
return false;
}
}
}
if((length==0)&&(i==s.length())){
return true;
}
return false;
}
public static void main(String[] args) {
String s=input.nextLine();
System.out.println(isValid(s));
}
}
尾语
以上属于个人见解,有好的想法可以在下方评论写出自己的想法,大家一起进步。该题是力扣上的题,若有侵权,请及时告知。该题链接:https://leetcode-cn.com/problems/valid-parentheses