c语言字符串中的字符无效_LeetCode基础算法题第171篇:分割平衡字符串中的字符串...

7b7fc459a0b714814ada842bad7fea7b.png

技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完。目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和精力有限,其他语言的实现有兴趣的朋友请自己尝试。

如果有任何问题可以在文章后评论或者私信给我。

如果有朋友希望我讲些其他话题,请在评论区留言或者私信给我。

持续分享,敬请关注。


LeetCode 1221. 分割平衡字符串中的字符串(Split a String in Balanced Strings)

问题描述:

平衡字符串是指具有相等数量的" L"和" R"字符的字符串。

给定一个平衡的字符串 s,需要将其拆分为最大数量的平衡子字符串。

返回可以拆分的平衡字符串的最大数量。

注:

  • 1 <= s.length <= 1000;
  • s[i] = 'L' or 'R';

示例:

92a3a1ed42562b2185720885f4212f8e.png

C语言实现:

这道题非常简单。根据题目描述和题目提供的三个示例,我们会发现,我们只要从左往右查找,找到一个平衡字符串,结果就加1,然后从这个位置继续向后查找,最后的总数就是我们要的结果。

这样题目就转化成,如何找出一个平衡字符串。

按照题目的描述,平衡字符串就是有相同数量的'R' 和'L'。那么我们的算法可以这样做:

定义一个变量isBalance初始化为0,然后遍历字符串,当遇到'R'时加1,遇到'L'时减一。那么如果某一时刻isBalance重新等于0的时候,就说明前面遍历的字符组成的字符串是一个平衡字符串。

所以最终代码如下:

65e38f05630be9ed97419f03ac41c46e.png
780cf55c51ee824cd7c813463aa1d8fa.png

Java语言实现:

Java 的实现和C语言的实现一致,不再撰述。

代码如下:

f22854ed93c34c852398a9c2c5d0479f.png
b1d2cca34f6d43206cfcf079f5520849.png

Python语言实现:

Python 的实现和C语言的实现一致,不再撰述。

代码如下:

5ce789260f987335bf4d3c3a6c03cc6d.png
5fa69c4f99cef313f84a702e46ff0f67.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值