【Leetcode】1221. Split a String in Balanced Strings

news/2024/7/5 4:18:13

题目地址:

https://leetcode.com/problems/split-a-string-in-balanced-strings/

给定一个长 n n n的字符串 s s s,恰好含 n / 2 n/2 n/2个字符'L' n / 2 n/2 n/2个字符'R',题目保证 n n n是偶数。问其能分为最多多少个非空的,且两个字符个数相等的子串。

从左向右遍历,可以每次在剩余字符串里找到最短的符合条件的前缀,将其切出,再不断重复做。简单证明可以用反证法,如果这个前缀不切,那么在后面切,这个前缀的后面一段也满足条件,从而可以多切出一段,矛盾。代码如下:

class Solution {
 public:
  int balancedStringSplit(string s) {
    int cnt[2]{0, 0}, res = 0;
    for (char ch : s) {
      (ch == 'R' ? cnt[0] : cnt[1])++;
      if (cnt[0] == cnt[1]) res++;
    }

    return res;
  }
};

时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)


http://www.niftyadmin.cn/n/3641959.html

相关文章

【Leetcode】1791. Find Center of Star Graph

题目地址: https://leetcode.com/problems/find-center-of-star-graph/ 给定一个nnn个顶点的无向图,给出所有的n−1n-1n−1条边,题目保证其为星形图,即只有一个点在中心,其余点都与它相连。求中心点编号。 边是以两…

How to: Modify a Project System So That Projects Load in Multiple Versions of Visual Studio

How to: Modify a Project System So That Projects Load in Multiple Versions of Visual Studio http://msdn.microsoft.com/en-us/library/hh266706(vVS.110).aspx posted on 2014-02-21 12:02 K3 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/sskset/p/3…

java与Groovy的整合(I)

Groovy是构建在JVM上的一个轻量级却强大的动态语言.因为Groovy就是用Java写的,Groovy可以做到与Java的无缝兼容,可以使用Java强大的类库 而且Groovy最终也会被编译成class文件. Groovy在1.0版的时候还存在性能问题,因为Groovy的很多实现都是用反射来做的,但是现在Groovy 1.1快…

设计模式:中介者模式(Mediator)

定 义:用一个中介对象来封装一系列对象的交互。中介者使各个对象不需要显示地相互作用,从而耦合松散,而且可以独立的改变他们之间的交互。 结构图: Mediator类,抽象中介者类 abstract class Mediator{public abstrac…

java与Groovy的整合(II)

Groovy与流行框架的集成 1.与Spring的集成 现在Spring的核心包就提供了与Groovy的集成了,,很好,很强大,这样就可以显示业务逻辑的动态改变了 由于Groovy的代码中也有描述Java代码的机制,因此两者合用非常容易 Spring Bean: 代码 class"org.springframework.bea…

【Leetcode】1844. Replace All Digits with Characters

题目地址: https://leetcode.com/problems/replace-all-digits-with-characters/ 给定一个字符串sss,其只含小写字母和数字,并且偶数下标的全是小写字母,奇数下标的全是单个数字。要求将sss中的数字都改为其前一个字母加上这个数…

【Leetcode】848. Shifting Letters

题目地址: https://leetcode.com/problems/shifting-letters/ 给定一个小写英文字母的长nnn字符串sss,和一个等长的非负整数数组AAA,要求先将s[0]s[0]s[0]字符增加A[0]A[0]A[0]这么多数,然后将s[0:1]s[0:1]s[0:1]增加A[1]A[1]A[…

实现主成分分析与白化

在这一节里,我们将总结PCA,ZCA白化算法,并描述如何使用高效的线性代数库来实现它们。 首先,我们需要确保数据的均值(近似)为零。对于自然图像,我们通过减去每个图像块(patch)的均值(近似地&…