Leetcode_String --20. Valid Parentheses [easy]

Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid。

给定一个字符串包含上述的括号,写一个程序确定字符串是否有效

An input string is valid if:
1、Open brackets must be closed by the same type of brackets.
2、Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.

一个字符串有效:
1、开括号必须被同类型的闭括号括上
2、开括号必须按照正确的顺序被闭括号括上

Example 1:

Input: "()"
Output: true

Example 2:

Input: "()[]{}"
Output: true

Example 3:

Input: "(]"
Output: false

Example 4:

Input: "([)]"
Output: false

Example 5:

Input: "{[]}"
Output: true

Solution:

Python

class Solution:
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        stack = []
        mapping = {')':'(','}':'{',']':'['}   #创建一个括号对应字典
        
        for char in s:
            if char in mapping.values():   #碰到左括号,就压入栈中
                stack.append(char)
            elif char in mapping.keys():   #碰到右括号,则将它对应的左括号与字符串上一位字符进行比较,也就是stack.pop()出的元素
                if stack == [] or mapping[char] != stack.pop():   #这里的stack == [] 是为了防止字符串只有一个字符的情形
                    return False
            else:   #如果还有非字典中的字符,则返回False
                return False
        
        return stack == []   #最后检查字符串是否有多余元素,没有多余元素则栈为空,返回True,否则返回False

C++的思路和Python是一样的

C++

#include <stack>

class Solution {
public:
    bool isValid(string s) {
        stack<char> stk;
        for (auto c : s){
            switch (c){
                case '(':
                case '[': 
                case '{':stk.push(c); break;       
                case ')':
                    if(stk.empty() || '(' != stk.top()){
                        return false;
                    }
                    else{
                        stk.pop();
                    };
                    break;
                case ']':
                    if(stk.empty() || '[' != stk.top()){
                        return false;
                    }
                    else{
                        stk.pop();
                    };
                    break;
                case '}':
                    if(stk.empty() || '{' != stk.top()){
                        return false;
                    }
                    else{
                        stk.pop();
                    };
                    break;
                default: ;
            }
        
        }
        return stk.empty();

    }
};

//更简便的写法是:
#include <stack>
class Solution{
    public:
        bool isValid(string s){
            stack <char> stk;
            for (auto c : s){
                switch(c){
                    case '(':stk.push(')');break;
                    case '[':stk.push(']');break;
                    case '{':stk.push('}');break;
                    default:
                        if(stk.empty() || c != stk.top()){
                            return false;
                        }
                        else{
                            stk.pop();
                        }
                        
                }
            }
            return stk.empty();
        }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
def big_countries(world: pd.DataFrame) -> pd.DataFrame是一个在pandas中定义的函数,它的参数是一个名为world的DataFrame。该函数的目的是过滤出符合条件的国家,并返回一个新的DataFrame,包含'name'、'population'和'area'这三列的数据。通过使用条件判断,将满足条件的行筛选出来,然后再选择所需的列返回。具体的实现方法有两种,一种是使用pandas写法,另一种是使用行过滤方法。在这两种方法中,都使用了与运算符(|)和比较运算符(>=)来对DataFrame进行条件判断,以筛选出符合条件的行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Leetcode 30天Pandas挑战】学习记录 上](https://blog.csdn.net/cwtnice/article/details/132065786)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Pandas【条件筛选】](https://blog.csdn.net/Henry_Zhao10/article/details/132050959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值