当前位置: 首页 > 编程笔记 >

查找信号到达字符串中所有位置所花费的时间-C ++

吕冠宇
2023-03-14
本文向大家介绍查找信号到达字符串中所有位置所花费的时间-C ++,包括了查找信号到达字符串中所有位置所花费的时间-C ++的使用技巧和注意事项,需要的朋友参考一下

在本教程中,我们将编写一个程序来计算信号到达字符串中所有位置所花费的时间。让我用一个例子来解释它。

我们将有一个仅包含sp字符的字符串。s信号p是字符串中的位置。信号从s开始,沿左右两个方向传播。我们假设要花费一个单位时间才能到达字符串中的下一个位置。我们的任务是计算将所有位置转换为信号所需的时间。

让我们看一些例子。

输入-pppppspss

输出-5

输入-pspspsps

输出-1

输入-ssssss

输出-0

让我们看看解决问题所涉及的步骤。

  • 初始化字符串和时间

  • 遍历字符串。

    • 计算连续的p个字符,并将计数存储在变量中。

    • 如果当前字符是s并且p计数大于上次,则检查s是否在左侧。

    • 如果s出现在两侧,则将计数分成两半,因为s可以在两个方向上传播。

    • 重置p的计数。

示例

让我们看一下代码。

#include <bits/stdc++++.h>
using namespace std;
int timeToConvertToSignalString(string sample_string, int string_len) {
   int p_count = 0, time = 0;
   for (int i = 0; i <= string_len; i++) {
      if (sample_string[i] == 'p') {
         p_count++;
      }
      else {
         if (p_count > time) {
            bool is_present_left_side = false;
            if (((i - p_count) > 0) && (sample_string[i - p_count - 1] == 's')) {
               is_present_left_side = 1;
            }
            if (is_present_left_side) {
               p_count = ceil((double)p_count / 2);
            }
            time = max(time, p_count);
         }
         p_count = 0;
      }
   }
   return time;
}
int main() {
   string sample_string = "pppppspss";
   int n = sample_string.size();
   cout << timeToConvertToSignalString(sample_string, n) << endl;
   return 0;
}
输出结果

如果执行上述程序,则将得到以下结果。

5

尝试以其他情况运行该程序并进行检查。

结论

如果您对本教程有任何疑问,请在评论部分中提及。

 类似资料:
  • 问题内容: 我正在尝试查找“ |”的所有出现 在一个字符串中。 但我得到一个错误: 问题答案: 功能: 将返回的索引列表中的出现。

  • 本文向大家介绍在C ++中查找所有好的字符串,包括了在C ++中查找所有好的字符串的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个字符串s1和s2。这些字符串的大小为n,我们还有另一个字符串称为evil。我们必须找到好字符串的数量。 如果字符串的大小为n,则按字母顺序大于或等于s1,按字母顺序小于或等于s2,并且作为子字符串不包含邪恶,则该字符串称为良。答案可能非常大,因此请以10 ^ 9

  • 问题内容: 我需要解析一个HTML文档并查找其中所有出现的字符串。 我目前将HTML加载到字符串变量中。我只需要字符位置,这样我就可以遍历列表以在字符串之后返回一些数据。 该函数仅返回第 一个 匹配项。如何 全部 归还呢? 问题答案: 在不使用正则表达式的情况下,类似这样的方法应该可以返回字符串位置:

  • 我正在使用DocX库来替换word文档中的文本。我想以某种方式找到模板docx文件中“[]”之间的所有字符串,例如[Name]、[LastName]、[Date]等...并将其替换为我以前加载到datagridview中具有相同列名(name、LastName、Date)的值。以下是我目前掌握的信息:

  • 问题内容: 我正在尝试查找Java字符串中所有出现的子字符串。 例如:在“ ababsdfasdfhelloasdf”中搜索“ asdf”将返回[8,17],因为有2个“ asdf”,一个在位置8,另一个在17。在“ aaaaaa”中搜索“ aa”将返回[0, 1,2,3,4],因为位置0、1、2、3和4处有一个“ aa”。 我尝试了这个: 可以在Python中解决此问题,如下所示: 其中“ wo

  • 我必须记录消费者在SpringKafka中花费的时间。由于kafkaListener方法对每条消息都执行,因此在那里放置一个记录器是行不通的。此外,有时一些信息会丢失,而不是被消费者消费掉。我应该把记录器放在哪里,以找出消费者启动后的弹性时间。使用者不会退出或关闭,其轮询将无限期进行