zoukankan      html  css  js  c++  java
  • 20. 有效的括号

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

    有效字符串需满足:

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

    示例 1:

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

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

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

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

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

    /*
    解题思路:
    '('与')'的ASCII值差1,'['与']','{'与'}'的ASCII值差2
    思路类似于消消乐,形成一次正确闭合,则消除这个闭合,
    如果是()()这个类似,则 i 一直 0 ,否则,左侧有未闭合的,则i向左移位。
    最后字符串为空,返回true,否则,返回false
    */
    #include<iostream>
    #include<string>
    using namespace std;
    class Solution 
    {
    public:
    	bool isValid(string s) 
    	{
    		int i = 0;
    		while (i<s.length())
    		{
    			if (s[i + 1] - s[i] == 1 || s[i + 1] - s[i] == 2)
    			{
    				s.replace(i, 2, ""); //将从pos处开始的2位字符换成""
    				if (i>0)
    					i--;
    			}
    			else
    			{
    				i++;
    			}
    		}
    		if (s != "") 
    			return false;
    		else 
    			return true;
    	}
    };
    int main(){
    	string str;
    	cin >> str;
    	bool a = Solution().isValid(str);
    	cout << a << endl;
    	system("pause");
    	return 0;
    
    }
    

      

  • 相关阅读:
    陈欧代言
    location传值
    jsp中button传值
    电影
    排序
    比较两个字符,相等输出yes,不相等输出no
    查表求平方值
    数据库查询调优(SQL 2008)
    HelloWorld
    关于缓存 (这个自己也在慢慢学习,慢慢总结中,有路过的,求指点,赶紧不尽。。。)
  • 原文地址:https://www.cnblogs.com/277223178dudu/p/11410784.html
Copyright © 2011-2022 走看看