Task.15有效的括号

这篇博客探讨了LeetCode上的第20题——有效的括号问题。内容涉及题目的描述和可能超时的代码实现,提出了通过删除连续成对括号来检查有效性的思路。
摘要由CSDN通过智能技术生成

LeetCode.20有效的括号

题目

在这里插入图片描述
在这里插入图片描述

代码

public class Solution 
{    
    public bool IsValid(string s) 
    {        
        if (s.Length == 0)            
            return true;        
        else if (s.Length % 2 != 0)            
            return false;        
        else         
        {
            int i;
            for (i = 0; i < s.Length; )
            {
                if (s[i] == '[' || s[i] == '{' || s[i] == '(')
                {
                    if (s[i] == '[' && s[i + 1] == ']')
                        continue;
                    else if (s[i] == '{' && s[i + 1] == '}')
                        continue;
                    else if (s[i] == '(' && s[i + 1] == ')')
                        continue;
                    else
                        return false;
                }
                i += 2;    
            }
            return true;
        }
    }
}

可能由于循环和判断太多,导致超出时间限制。
如果括号都是成对的话,那么必有至少一组成对的括号是连在一起的,因此我们可以依次找到这些成对的括号然后删除,如果最后字符串里没有了元素,说明括号都是成对出现的。

public class Solution 
{    
    public bool IsValid(string s) 
    {        
        if (s.Length == 0)            
            return true;        
        else if (s.Length % 2 != 0)            
            return false;        
        else        
        {            
            int i = 0;            
            int index = -1;                       
            int len = s.Length;            
            for (; i < len;)            
            {                
                if (s.IndexOf("()") != -1)                
                {                    
                    index = s.IndexOf("()");                    
                    s = s.Remove(index,2);                
                }                
                else if (s.IndexOf("[]") != -1)                
                {                    
                    index = s.IndexOf("[]");                    
                    s = s.Remove(index, 2);                
                }                
                else if (s.IndexOf("{}") != -1)                
                {                    
                    index = s.IndexOf("{}");                    
                    s = s.Remove(index, 2);                
                }                
                else                    
                    return false;                
                len -= 2;                
                i = 0;            
            }            
            return true;        
        }    
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值