题目描述:
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
题解:
class Solution {
private static final Map<Character,Character> map = new HashMap<Character,Character>()
{
{
put('{','}'); put('[',']'); put('(',')');
}
};
public boolean isValid(String s) {
if(s.length() > 0 && !map.containsKey(s.charAt(0)))
return false;
LinkedList<Character> stack = new LinkedList<Character>()
{
{
add('?');
}
};
for(Character c : s.toCharArray())
{
if(map.containsKey(c)) stack.addLast(c);
else if(map.get(stack.removeLast()) != c)
return false;
}
return stack.size() == 1;
}
}
笔记:
使用containsKey() 方法
是检查 hashMap 中是否存在指定的 key 对应的映射关系
使用toCharArray()方法
是将一个字符串内容转换为字符数组
使用addLast()方法
此方法用于在链接列表的最后或结尾阶段插入对象
使用removeLast() 方法
是删除并返回此列表中的最后一个元素