zoukankan      html  css  js  c++  java
  • LeetCode刷题191126

    博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教。题目及解法来自于力扣(LeetCode),传送门

      今天状态不好,划水第二天。

    算法:

    题号:20

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

    有效字符串需满足:

    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true
    示例 2:

    输入: "()[]{}"
    输出: true
    示例 3:

    输入: "(]"
    输出: false
    示例 4:

    输入: "([)]"
    输出: false
    示例 5:

    输入: "{[]}"
    输出: true

    public class Solution {
            public bool IsValid(string s)
            {
                Stack<char> stack = new Stack<char>();
    
                var test = s.ToCharArray();
    
                foreach (var item in test)
                {
                    if ('}'.Equals(item) || ']'.Equals(item) || ')'.Equals(item))
                    {
                        if (stack.Count() == 0)
                        {
                            return false;
                        }
                        else
                        {
                            var result = stack.Pop();
    
                            if (('}'.Equals(item) && !'{'.Equals(result))
                                || (']'.Equals(item) && !'['.Equals(result))
                                || (')'.Equals(item) && !'('.Equals(result)))
                            {
                                return false;
                            }
                        }
                    }
                    else
                    {
                        stack.Push(item);
                    }
                }
    
                if (stack.Count() > 0)
                {
                    return false;
                }
    
                return true;
            }
    }

      官方解法传送门。嗯,官方的第二种方法也用到了栈。不过好像思路不太一样。其实也可以用下评论里别人的思路,简化判断,如果栈的深度大于字符串长度的1/2,就返回false。

    数据库:

    题号:596

    有一个courses 表 ,有: student (学生) 和 class (课程)。

    请列出所有超过或等于5名学生的课。

    例如,表:

    +---------+------------+
    | student | class |
    +---------+------------+
    | A | Math |
    | B | English |
    | C | Math |
    | D | Biology |
    | E | Math |
    | F | Computer |
    | G | Math |
    | H | Math |
    | I | Math |
    +---------+------------+
    应该输出:

    +---------+
    | class |
    +---------+
    | Math |
    +---------+
    Note:
    学生在每个课中不应被重复计算。

    SELECT
    class
    from courses
    group by class
    having count(distinct(student)) >= 5

      水一道,其实就是去重。

  • 相关阅读:
    SSL原理
    花不是玫瑰的全部
    sqlserver2008数据类型说明
    js识别半角字符的正则表达式
    js全角字符转半角字符
    java 全角字符转半角
    MySQL数据目录结构
    git使用
    [iOS]MVVM-框架介绍
    圆形进度条
  • 原文地址:https://www.cnblogs.com/dogtwo0214/p/11937755.html
Copyright © 2011-2022 走看看