当前位置: 首页 > 科技观察

数据结构与算法SplittingBalancedStrings

时间:2023-03-20 21:45:01 科技观察

SplittingBalancedStrings题目链接:https://leetcode-cn.com/problems/split-a-string-in-balanced-stringsinabalancedstrings,'的个数L'和'R'字符是一样的。给定一个平衡字符串s,请将其拆分为尽可能多的平衡字符串。注意:拆分得到的每个字符串都必须是平衡的字符串。返回通过拆分可以获得的最大平衡字符串数。示例1:输入:s="RLRRLLRLRL"输出:4解释:s可以拆分为"RL"、"RRLL"、"RL"、"RL",每个子串包含相同数量的'L'和'R'.示例2:输入:s="RLLLRRRRLR"输出:3解释:s可以拆分为"RL","LLLRRR","LR",每个子串包含相同数量的'L'和'R'。示例3:输入:s="LLLLRRRR"输出:1解释:s只能是"LLLLRRRR"。示例4:输入:s="RLRRRLLRLL"输出:2解释:s可以拆分为"RL","RRRLLRLL",每个子字符串包含相同数量的'L'和'R'。思考的话题看似很复杂,其实是很简单的贪心。关于贪心,我这里说的是贪心算法。这些你应该知道!有详细的解释。从前向后遍历,只要遇到平衡的子串,计数就+1,可以遍历一次。局部最优:从前向后遍历,只要遇到平衡的子串,就统计全局最优:统计最平衡的子串。局部最优可以导致全局最优,如果没有反例,那就尽量贪心。比如LRLR本身就是一个平衡子串,但是遇到LR可以拆分。C++代码如下:classSolution{public:intbalancedStringSplit(strings){intresult=0;intcount=0;for(inti=0;i