LeetCode刷题(96)~分割平衡字符串【巧妙】

举报
海轰Pro 发表于 2021/08/05 23:56:07 2021/08/05
【摘要】 题目描述 在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。 给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。 返回可以通过分割得到的平衡字符串的最大数量。 示例 1: 输入:s = "RLRRLLRLRL" 输出:4 解释:s 可以分割为 "RL", "RRLL", "RL", "RL", 每个子字符串中都包含相同数量的 'L' 和...

题目描述

在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。

给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。

返回可以通过分割得到的平衡字符串的最大数量。

示例 1:

输入:s = "RLRRLLRLRL"
输出:4
解释:s 可以分割为 "RL", "RRLL", "RL", "RL", 每个子字符串中都包含相同数量的 'L''R'
 
  • 1
  • 2
  • 3

示例 2:

输入:s = "RLLLLRRRLR"
输出:3
解释:s 可以分割为 "RL", "LLLRRR", "LR", 每个子字符串中都包含相同数量的 'L''R'
 
  • 1
  • 2
  • 3

示例 3:

输入:s = "LLLLRRRR"
输出:1
解释:s 只能保持原样 "LLLLRRRR".

  
 
  • 1
  • 2
  • 3

提示:

  • 1 <= s.length <= 1000
  • s[i] = ‘L’ 或 ‘R’
  • 分割得到的每个字符串都必须是平衡字符串。

解答 By 海轰

提交代码(栈实现)

int balancedStringSplit(string s) { stack<char> a; int count=0; for(int i=0;i<s.length();++i) { if(a.empty()) a.push(s[i]); else if((s[i]=='R'&&a.top()=='L')||(s[i]=='L'&&a.top()=='R')) a.pop(); else a.push(s[i]); if(a.empty()) ++count; } return count; }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

运行结果
在这里插入图片描述

解答

Demo(巧妙!!!)

int balancedStringSplit(string s) { int sum=0; int res=0; for(char i:s) { sum+=(i-'O'); if(sum==0) ++res; } return res; }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

运行结果
在这里插入图片描述
Demo

int balancedStringSplit(string s) { int count=0; int res=0; for(char i:s) { if(i=='R') ++count; if(i=='L') --count; if(count==0)  ++res; } return res; }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

运行结果
在这里插入图片描述

题目来源

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/split-a-string-in-balanced-strings

文章来源: haihong.blog.csdn.net,作者:海轰Pro,版权归原作者所有,如需转载,请联系作者。

原文链接:haihong.blog.csdn.net/article/details/108220766

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。