在C ++中的平衡字符串中分割字符串

众所周知,平衡弦是指具有相等数量的左右字符的弦。假设我们有一个平衡字符串s将其拆分为最大数量的平衡字符串。我们必须返回拆分后的平衡字符串的最大数量。因此,如果字符串为“ RLRRLLRLRL”,则输出为4。因为有四个平衡字符串。每个子串的“ RL”,“ RRLL”,“ RL”和“ RL”具有相等的L和R。

为了解决这个问题,我们将遵循以下步骤-

  • 初始化cnt:= 0和ans:= 0

  • 对于我:= 0到字符串的大小

    • 如果s [j] ='R',则将cnt加1,否则将cnt减1

    • 如果j – i> 0且cnt = 0,则将ans加1,i:= j,并中断循环

    • cnt:= 0

    • 对于j:= i到字符串的大小-

    • 返回ans

    示例

    让我们看下面的实现以更好地理解-

    #include <bits/stdc++.h>

    using namespace std;

    class Solution {

       public:

          int balancedStringSplit(string s) {

             int cnt = 0;

             int ans = 0;

             for(int i =0;i<s.size();i++){

                cnt = 0;

                for(int j = i;j<s.size();j++){

                   if(s[j] == 'R')cnt++;

                   else cnt--;

                   if(j-i>0 && cnt == 0 ){

                      ans++;

                      i=j;

                      break;

                   }

                   //cout << i << " " << j <<" "<< cnt << endl;

                }

             }

             return ans;

          }

    };

    main(){

       Solution ob;

       cout << ob.balancedStringSplit("RLLLLRRRLR");

    }

    输入值

    "RLLLLRRRLR"

    输出结果

    3

    以上是 在C ++中的平衡字符串中分割字符串 的全部内容, 来源链接: utcz.com/z/352445.html

    回到顶部