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;
    
    }
    

      

  • 相关阅读:
    BufferedOutputStream
    BufferedInputStream
    IO异常 的处理
    FileOutStream
    FileInputStream
    File常用的方法
    IO流
    枚举
    jdk1.5新特性之-----自动装箱与自动拆箱
    jdk1.5新特性之------->可变参数
  • 原文地址:https://www.cnblogs.com/277223178dudu/p/11410784.html
Copyright © 2011-2022 走看看