package Leetcode;
/**
* 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
* 有效字符串需满足:
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
* 注意空字符串可被认为是有效字符串。
*/
import java.util.HashMap;
import java.util.Stack;
/**
* 思路:使用hashmap保存键值对就是括号的对应类型,定义一个栈来说存放括号,
* 遍历括号,假如没有配对,就进栈,配对了就出栈,并且与hashmap一起判断是否成对,
* 假如不成对还有栈为空,return false,
*/
public class Leetcode20 {
public static void main(String[] args) {
String cc = "()";
System.out.println(new Solution().test(cc));
}
}
class Solution{
public boolean test(String s){
//1、定义hashmap
HashMap<Character, Character> hash = new HashMap<>();
//hashmap成对存在
hash.put('}','{');
hash.put(')','(');
hash.put(']','[');
Stack<Character> S = new Stack();
for (char c:s.toCharArray()) {
if(c=='{'||c=='('||c=='['){
S.push(c);
}else if(S.isEmpty()||S.pop()!=hash.get(c)){
return false;
}
}
return S.isEmpty();//最后栈的内容作为返回值,假如为空则说明栈内的虽所有值都弹出了,配对成功,则括号合法
}
}
Leetcode20有效的括号
最新推荐文章于 2024-09-14 18:52:56 发布