标签:分析 false check amp boolean switch LIDS ted tput
Given a string s
containing only three types of characters: ‘(‘
, ‘)‘
and ‘*‘
, return true
if s
is valid.
The following rules define a valid string:
‘(‘
must have a corresponding right parenthesis ‘)‘
.‘)‘
must have a corresponding left parenthesis ‘(‘
.‘(‘
must go before the corresponding right parenthesis ‘)‘
.‘*‘
could be treated as a single right parenthesis ‘)‘
or a single left parenthesis ‘(‘
or an empty string ""
.
Example 1:
Input: s = "()" Output: true
Example 2:
Input: s = "(*)" Output: true
Example 3:
Input: s = "(*))" Output: true
分析:
我们用lower and upper来表示“(”可能出现的最小次数和最大次数。但是如果lower小于0,那是一种invalid case,在upper大于0的这种情况下,我们可以把lower设为0进入下一轮。
1 class Solution { 2 public boolean checkValidString(String s) { 3 int upper = 0; 4 int lower = 0; 5 6 for (char letter : s.toCharArray()) { 7 switch (letter) { 8 case ‘(‘: lower++; upper++; break; 9 case ‘)‘: lower--; upper--; break; 10 case ‘*‘: lower--; upper++; break; 11 } 12 if (upper < 0) return false; 13 if (lower < 0) lower = 0; 14 } 15 return lower == 0; 16 } 17 }
标签:分析 false check amp boolean switch LIDS ted tput
原文地址:https://www.cnblogs.com/beiyeqingteng/p/14590606.html