列表

详情


2315. 统计星号

给你一个字符串 s ,每 两个 连续竖线 '|' 为 一对 。换言之,第一个和第二个 '|' 为一对,第三个和第四个 '|' 为一对,以此类推。

请你返回 不在 竖线对之间,s 中 '*' 的数目。

注意,每个竖线 '|' 都会 恰好 属于一个对。

 

示例 1:

输入:s = "l|*e*et|c**o|*de|"
输出:2
解释:不在竖线对之间的字符加粗加斜体后,得到字符串:"l|*e*et|c**o|*de|" 。
第一和第二条竖线 '|' 之间的字符不计入答案。
同时,第三条和第四条竖线 '|' 之间的字符也不计入答案。
不在竖线对之间总共有 2 个星号,所以我们返回 2 。

示例 2:

输入:s = "iamprogrammer"
输出:0
解释:在这个例子中,s 中没有星号。所以返回 0 。

示例 3:

输入:s = "yo|uar|e**|b|e***au|tifu|l"
输出:5
解释:需要考虑的字符加粗加斜体后:"yo|uar|e**|b|e***au|tifu|l" 。不在竖线对之间总共有 5 个星号。所以我们返回 5 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int countAsterisks(string s) { } };

java 解法, 执行用时: 2 ms, 内存消耗: 39.5 MB, 提交时间: 2023-01-29 08:59:14

class Solution {
    public int countAsterisks(String s) {
        boolean valid = true;
        int res = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '|') {
                valid = !valid;
            } else if (c == '*' && valid) {
                res++;
            }
        }
        return res;
    }
}

javascript 解法, 执行用时: 60 ms, 内存消耗: 40.9 MB, 提交时间: 2023-01-29 08:58:50

/**
 * @param {string} s
 * @return {number}
 */
var countAsterisks = function(s) {
    let valid = true;
    let res = 0;
    for (let i = 0; i < s.length; i++) {
        let c = s[i];
        if (c === '|') {
            valid = !valid;
        } else if (c === '*' && valid) {
            res++;
        }
    }
    return res;
};

golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2023-01-29 08:58:35

func countAsterisks(s string) (res int) {
    valid := true
    for _, c := range s {
        if c == '|' {
            valid = !valid
        } else if c == '*' && valid {
            res++
        }
    }
    return
}

python3 解法, 执行用时: 32 ms, 内存消耗: 15 MB, 提交时间: 2022-06-30 11:54:44

class Solution:
    def countAsterisks(self, s: str) -> int:
        arr = s.split('|')
        n = len(arr)
        ans = 0
        for i in range(0, n, 2):
            ans += arr[i].count('*')
        return ans

上一题