首页  >  文章  >  后端开发  >  计算需要移除的配对数,以使所有平衡括号子序列为空

计算需要移除的配对数,以使所有平衡括号子序列为空

WBOY
WBOY转载
2023-09-04 12:57:06648浏览

计算需要移除的配对数,以使所有平衡括号子序列为空

C 编译器将字符串视为字符数组,因此很容易根据位置删除字符串中的字符。必须检查字符串的第一个和最后一个位置是否存在括号,并且必须将其删除。该字符串可以复制到另一个变量中并显示。

C 中有许多预定义函数可以有效地用来操作字符串。在 C 语言中,借助函数可以轻松实现从起始位置或结束位置删除字符。

从字符串中删除开始和结束括号

括号是单个字符,是输入字符串的一部分,可以按照下面给出的逻辑和算法从字符串中删除

字符是我们在键盘上看到的任何字母数字键,它存储在 C 中的字符变量中。

() 在 c 中被称为括号。我们需要在用户输入的字符串中识别该字符,并将其从字符串中删除。

数组是一个变量,它具有许多由单个名称和连续编号寻址的存储位置,而字符串是一个字符数组。

在很多情况下,我们需要从字符串中删除括号,例如在解决正则表达式时。

语法

函数 countRemoval 接受字符串 str 作为输入并返回一个整数值,该值表示使字符串中所有平衡括号子序列为空所需的删除对的数量。该函数使用变量 count 来跟踪所需的删除次数,最初设置为 0。它还使用变量 Balance 来跟踪字符串中左括号和右括号的数量之间的平衡。然后该函数迭代字符串的长度并检查每个索引处的字符。如果该字符是左括号,则余额加1,如果是右括号,则余额减1。如果余额变为负数,则说明多了一个右括号,移除次数为加 1,余额重置为 0。循环后,计数更新为包括剩余余额除以 2,作为使字符串中所有平衡括号子序列为空所需的删除量。

int countRemoval(string str) {
   int count = 0;
   int balance = 0;
   for (int i = 0; i < str.length(); i++) {
      if (str[i] == '(') {
         balance++;
      } else {
         balance--;
      }
      if (balance < 0) {
         count++;
         balance = 0;
      }
   }
   count += balance / 2;
   return count;
} 

算法

  • 第 1 步 - 声明 str1、str2,初始化为 null。

  • 第 2 步 - 声明整型变量 len,n,i

  • 第 3 步 - 从控制台接受 str1

  • 第 4 步 - 检查第一个字符是否为 (

  • 步骤 5 - 如果是 n = 1

  • 第 6 步 - 当 n

  • 第 7 步 - 检查 str2 的最后一个字符是否为 )。

  • 第 8 步 - 如果是,请将其替换为

以上是计算需要移除的配对数,以使所有平衡括号子序列为空的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:tutorialspoint.com。如有侵权,请联系admin@php.cn删除