算法leetcode2315. 统计星号(rust和go重拳出击)
Posted 二当家的白帽子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法leetcode2315. 统计星号(rust和go重拳出击)相关的知识,希望对你有一定的参考价值。
文章目录
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 包含 偶数 个竖线 ‘|’ 。
分析
- 面对这道算法题目,二当家的陷入了沉思。
- 看起来就是有条件的统计星号数量。
- 可以直接遍历字符计数。
- 也可以考虑用正则表达式。
- 还可以将字符串按照竖线分割,然后隔一组统计。
题解
rust
impl Solution
pub fn count_asterisks(s: String) -> i32
let mut ans = 0;
let mut isCalc = true;
s.as_bytes().iter().for_each(|&c|
match c as char
'*' =>
if isCalc
ans += 1;
'|' =>
isCalc = !isCalc;
_ =>
);
ans
go
func countAsterisks(s string) int
ans := 0
isCalc := true
for _, c := range s
switch c
case '*':
if isCalc
ans++
case '|':
isCalc = !isCalc
return ans
typescript
function countAsterisks(s: string): number
let ans = 0;
let isCalc = true;
for (const c of s)
switch (c)
case '*':
if (isCalc)
++ans;
break;
case '|':
isCalc = !isCalc;
break;
return ans;
;
python
class Solution:
def countAsterisks(self, s: str) -> int:
ans = 0
is_calc = True
for c in s:
if c == '*':
if is_calc:
ans += 1
elif c == '|':
is_calc = not is_calc
return ans
c
int countAsterisks(char * s)
int ans = 0;
bool isCalc = true;
while (*s)
switch (*s)
case '*':
if (isCalc)
++ans;
break;
case '|':
isCalc = !isCalc;
break;
++s;
return ans;
c++
class Solution
public:
int countAsterisks(string s)
int ans = 0;
bool isCalc = true;
for (auto c: s)
switch (c)
case '*':
if (isCalc)
++ans;
break;
case '|':
isCalc = !isCalc;
break;
return ans;
;
java
class Solution
public int countAsterisks(String s)
int ans = 0;
boolean isCalc = true;
for (char c : s.toCharArray())
switch (c)
case '*':
if (isCalc)
++ans;
break;
case '|':
isCalc = !isCalc;
break;
return ans;
原题传送门:https://leetcode.cn/problems/count-asterisks/
非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~
以上是关于算法leetcode2315. 统计星号(rust和go重拳出击)的主要内容,如果未能解决你的问题,请参考以下文章
算法leetcode|2185. 统计包含给定前缀的字符串(rust和go)
算法leetcode|2185. 统计包含给定前缀的字符串(rust和go)
算法leetcode|2185. 统计包含给定前缀的字符串(rust和go)
算法leetcode2176. 统计数组中相等且可以被整除的数对(rust和go重拳出击)