Scala - 获取字符串中左括号的对应右括号位置【附逻辑】

本文详细介绍了如何使用Python编写一个算法来检测给定字符序列中左括号的配对位置,通过实例演示了逻辑步骤和count变量的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑

1.判断左括号索引(lBracketsIndex)是否超出待检测字符序列(waitDetectArray)的长度。
2.判断左括号索引对应的字符是否为左括号。
3.获取左括号心爱的另一半:
3.1.初始化count=1。
3.2.遍历待检测序列,直到大于左括号索引时开始判断字符,即以左括号位置为开始位置。
3.3.此时是大于左括号索引,如果当前字符等于左括号,则count+=1。
3.4.如果当前字符等于右括号,则count-=1,其他字符不管。
3.5.依次遍历,直到count=0,则表示遇到了配对的右括号,返回此下标。

例子

()[(())]
-> 索引从0开始,找到索引3的右括号,count的数值变化如下
xxx1210
=> 得到索引6

代码

import scala.util.control.Breaks.{break, breakable}
def rBracketsIndexMatch(waitDetectStr: String, lBracketsIndex: Int): Int = {
  var rBracketsIndex = -1
  /*
   *  检测传进来的左括号索引是否超出
   */
  val waitDetectArray = waitDetectStr.toCharArray
  if (waitDetectArray.length >= lBracketsIndex) {
    /*
     *  检测传进来的索引对应的字符是否为左括号
     */
    val waitDetectChar = waitDetectArray(lBracketsIndex)
    if (waitDetectChar == '(') {
      /*
       *  获取另一配对括号位置
       */
      var count = 1
      breakable (
        for (i <- waitDetectArray.indices) {
          if (i > lBracketsIndex) {
            if (waitDetectArray(i) == '(') {
              count += 1
            } else if (waitDetectArray(i) == ')') {
              count -= 1
            }
          }
          if (count == 0) {
            rBracketsIndex = i
            break
          }
        }
      )
    }
  }
  rBracketsIndex
}

文章来源:https://blog.youkuaiyun.com/qq_37267676/article/details/117335549

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值