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

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

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

示例 1:

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

示例 2:

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

示例 3:

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

我的思路
首先应该是分割字符串,按照“|”来分割字符串,分割出来的小字符串,按照一定规律可以先筛选出需要检索的那一部分

  1. 如果有奇数个“|”的情况:
    假设有奇数i个“|”符号,那么实际上分割出的是偶数个字符串,在这偶数个小字符串中,姑且看做一个字符数组,下标为偶数的字符元素(包括0),以及最后一个字符数组(也就意味着加1),都是我们的检索对象,那么在这里可以创建一个空数组a,将筛选出来的字符数组都填加进去,然后再在a数组中查找指定字符出现的次数。
  2. 如果有偶数个“|”的情况:
    假设有偶数i个“|”符号,那么就分割出了奇数个小字符串,在这些小字符串中,同样看做一个字符串组成的数组,下标为偶数的数组元素就成为我们的检索对象,创建一个空数组b,将筛选出来的小数组添加到里面去,成为我们真正的检索对象,再在其中查找指定字符出现的次数。
但是这样的解决方法非常复杂,理论上也许可行(待验证)

学习思路一
“题目难度不是很大,只需要按照要求将字符串分割开来,然后只计算偶数次或者奇数下标的子字符串中所含的’*‘的数量就可以了。”
(其实和我的思路差不多,但是看起来明显更简洁)

学习思路二
“设置一个flag值,当遇到左边的|的时候,将flag设置为true,右边的|对应flag为false,只有flag为false的时候才去对*进行计数,将计数结果返回即可。”

/*** @param {string} s* @return {number}*/
var countAsterisks = function(s) {let res = 0, flag = falsefor (let ch of s) {if (ch === '|') {flag = !flag} else if (ch === '*' && !flag) {res++}}return res
};

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

  1. Java黑皮书课后题第4章:4.20(字符串处理)编写一个程序,提示用户输入一个字符串,显示它的长度和第一个字符

    4.20(字符串处理)编写一个程序,提示用户输入一个字符串,显示它的长度和第一个字符 题目 题目概述 破题 代码 题目 题目概述 4.20(字符串处理)编写一个程序,提示用户输入一个字符串,显示它的长 ...

  2. 将字符串的一部分拷贝到另一个字符串

    主要3中实现方式:strncpy().string类.memcpy() 通过string实现更方便. 1.strcpy() 无法实现将字符串的一部分拷贝给另一个字符串. 2.strncpy() 利用标 ...

  3. 两种方法判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言)...

    例如:给定s1 = AABCD和s2 = BCDAA,返回1 给定s1 = abcd和s2 = ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 第一种: ...

  4. c语言两字符串转数字后相加,一个觉得很难的C语言问题。对两个数字字符串相加。 C语言 如何把一个字符串中相连的两个数字转化为一......

    导航:网站首页 > 一个觉得很难的C语言问题.对两个数字字符串相加. C语言 如何把一个字符串中相连的两个数字转化为一... 一个觉得很难的C语言问题.对两个数字字符串相加. C语言 如何把一个 ...

  5. Java黑皮书课后题第5章:*5.51(最长的共同前缀)编写一个程序,提示用户输入两个字符串,显示两个字符串最长的共同前缀

    5.51(最长的共同前缀)编写一个程序,提示用户输入两个字符串,显示两个字符串最长的共同前缀 题目 题目概述 运行示例 破题 代码 题目 题目概述 5.51(最长的共同前缀)编写一个程序,提示用户输入 ...

  6. 给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串...

    1 /* 2 * 给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串,其实也就是变位词问题 3 * 比如说 a='abc' b='acb'是可以通过a变成b的 4 * 思路; 5 ...

  7. 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值。在main函数中输入一行字符串,分别调用两个函数,输出反序后的字符串。

    题目要求: 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值.在main函数中输入一行字符串,分别调用两个函数,输出反序后的 ...

  8. 给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)...

    需求:给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换) 如:  a 不替换  b 不替换  ab 不替换  ba 不替换  aba 不替换  aab ...

  9. java 字符串每隔两位插入一个字符

    需求:如何将一个字符串每隔两位就插入一个字符,末尾不加. 输入参数:147dba2630d74228af63c97bbaf9eacd 输出结果:14:7d:ba:26:30:d7:42:28:af:6 ...

最新文章

  1. linux几个常用的环境变量配置文件
  2. java:提示Could not initialize class sun.awt.X11GraphicsEnvironment
  3. 简洁明了——STL容器库之set头文件常用函数集合
  4. C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别
  5. 微服务(Microservices)和服务网格(Service Mesh)架构概念整理
  6. 得到前i-1个数中比A[i]小的最大值,使用set,然后二分查找
  7. 使IE6下PNG背景图片透明的七种方法
  8. redis笔记5 stream消息队列
  9. EasyUI +MVC +EF实现增删改查
  10. 如何用php开启企业微信开发的回调模式
  11. Java 11 的新特性(上)
  12. 30本数据分析的书籍送给你!
  13. 基于 DHT 网络的磁力链接和BT种子的搜索引擎架构
  14. 阿里巴巴早期发展简史
  15. cmd运行记事本java文件
  16. Java 线程池常见误区
  17. led大屏按实际尺寸设计画面_led显示屏尺寸大小要怎么算
  18. 英语中什么是开音节,什么是闭音节
  19. gpu浮点计算能力floaps_关于CPU的浮点运算能力计算
  20. 折叠屏显示器比折叠屏手机更有价值

热门文章

  1. 更坏就是更好(Worse Is Better)
  2. iOS 设置录音权限
  3. 科诚Godex RT730x 打印机驱动
  4. Python每天学习计划
  5. C语言系列(二)有符号数和无符号数详解
  6. Programmer day01 and day02
  7. [数据分析] 对比分析方法
  8. 微型计算机原理与接口技术于枫答案,信号发生器(完整)毕业设计.doc
  9. Kindle剩余空间变少
  10. 华为ENSP——WLAN射频调优