这是第24篇算法,力扣链接
给你一个字符串
s
,每 两个 连续竖线'|'
为 一对 。换言之,第一个和第二个'|'
为一对,第三个和第四个'|'
为一对,以此类推。请你返回 不在 竖线对之间,
s
中'*'
的数目。注意,每个竖线
'|'
都会 恰好 属于一个对。示例 1:
输入:s = "l|*e*et|c**o|*de|" 输出:2 解释:不在竖线对之间的字符加粗加斜体后,得到字符串:"l|*e*et|c**o|*de|" 。 第一和第二条竖线 '|' 之间的字符不计入答案。 同时,第三条和第四条竖线 '|' 之间的字符也不计入答案。 不在竖线对之间总共有 2 个星号,所以我们返回 2 。
这道题和那个左右括号的题类似,我们可以立一个flag,当 | 为奇数的时候flag为false,期间的*不做统计,偶数的时候再做累加,代码如下:
func countAsterisks(s string) int {
flag, count := false, 0
for _, str := range s {
if str == '|' {
flag = !flag
}
if !flag && str == '*' {
count++
}
}
return count
}