678. Valid Parenthesis String

来源:互联网 发布:衣服软件 编辑:程序博客网 时间:2024/05/20 07:49

678. Valid Parenthesis String

  • 题目大意:Given a string containing only three types of characters: ‘(‘, ‘)’ and ‘*’, write a function to check whether this string is valid. We define the validity of a string by these rules:

    1. Any left parenthesis '(' must have a corresponding right parenthesis ')'.
    2. Any right parenthesis ')' must have a corresponding left parenthesis '('.
    3. Left parenthesis '(' must go before the corresponding right parenthesis ')'.
    4. '*' could be treated as a single right parenthesis ')' or a single left parenthesis '(' or an empty string.
    5. An empty string is also valid.
  • Example 1:

    Input: "()"Output: True
  • Example 2:

    Input: "(*)"Output: True
  • Example 3:

    Input: "(*))"Output: True
  • 题目大意:给定一个string字符,包含‘(’,‘)’,‘’三种字符,其中‘’可以表示空字符,‘(’或者‘)’,问是否满足string字符中左右括号相等。

  • 思路:具体见解释https://discuss.leetcode.com/topic/103936/short-java-o-n-time-o-1-space-one-pass/2

  • 代码

    package String;import java.util.Stack;/*** @Author OovEver* @Date 2017/12/8 18:57*/public class LeetCode678 {  public boolean checkValidString(String s) {      int low = 0;      int high = 0;     for(int i=0;i<s.length();i++) {         if (s.charAt(i) == '(') {             low++;             high++;         } else if (s.charAt(i) == ')') {             if (low > 0) {                 low--;             }             high--;         } else {             if (low > 0) {                 low--;             }             high++;         }         if (high < 0) {             return false;         }     }      return low == 0;  }}