博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Valid Parenthesis String
阅读量:5137 次
发布时间:2019-06-13

本文共 1241 字,大约阅读时间需要 4 分钟。

原题链接在这里:

题目:

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 

Note:

  1. The string size will be in the range [1, 100].

题解:

计数"("的数目. 遇到"("加一. 遇到")" 减一.

遇到"*". 可能分别对应"(", ")"和empty string 三种情况. 所以计数可能加一, 减一或者不变. 可以记录一个范围[lo, hi].

lo维持在0或以上的位置.

但若是hi都小于0, 说明确定的")"更多, 直接返回false.

否则看最后lo能否能停在0.

Time Complexity: O(s.length()). Space: O(1).

AC Java:

1 class Solution { 2     public boolean checkValidString(String s) { 3         if(s == null || s.length() == 0){ 4             return true; 5         } 6          7         int lo = 0; 8         int hi = 0; 9         for(int i = 0; i

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/7699029.html

你可能感兴趣的文章
导航,头部,CSS基础
查看>>
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>
OD使用教程20 - 调试篇20
查看>>
Java虚拟机(JVM)默认字符集详解
查看>>
Java Servlet 过滤器与 springmvc 拦截器的区别?
查看>>
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>
免费的大数据学习资料,这一份就足够
查看>>
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
企业级应用与互联网应用的区别
查看>>
itext jsp页面打印
查看>>
Perl正则表达式匹配
查看>>
DB Change
查看>>
nginx --rhel6.5
查看>>