0
点赞
收藏
分享

微信扫一扫

【MT32F006】MT32F006之CS1237采集秤传感器

SDKB英文 2023-08-18 阅读 45

1.题目

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

2.示例

示例 1:

 示例 2:

 示例 3:

提示:


 3.思路

首先需要找规律,第一如果该字符串个数为奇数那么绝对是无效的。并且需要用栈进行判断当遇到右括号时候,则与栈顶中元素进行对比,如果是匹配的左括号则出栈。如果出现不匹配则

4.代码

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        //        如果个数是奇数则绝对有问题
        if (s.length()%2==1){
            return false;
        }
        Map<Character,Character> map = new HashMap<>();
        map.put('}','{');
        map.put(')','(');
        map.put(']','[');

//       右括号无法存放进入stack中
        for (int i=0;i<s.length();i++){
           if (s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{'){
               stack.push(s.charAt(i));
           }else {
//               解决第一个右括号问题
               if(stack.isEmpty()){
                   return false;
               }
               if (stack.peek() == map.get(s.charAt(i))){
                   stack.pop();
               }else {
                   return false;
               }
           }
        }
        if (!stack.isEmpty()){
           return false;
        }
        return true;
    }
}

时间复杂度O(n),空间复杂度O(1)


会了?试试挑战下一题!♪(^∀^●)ノシ (●´∀`)♪

 

LeetCode150道面试经典题-- 环形链表(简单)_Alphamilk的博客-CSDN博客

举报

相关推荐

0 条评论