class Solution {
public:
int countAsterisks(string s) {
}
};
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 。
提示:
1 <= s.length <= 1000
s
只包含小写英文字母,竖线 '|'
和星号 '*'
。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