leetcode刷题69.分割平衡字符串——Java版
Posted 一条coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode刷题69.分割平衡字符串——Java版相关的知识,希望对你有一定的参考价值。
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐
"括号匹配"问题,主要是栈操作,'R’进栈,'L’出栈,栈空则匹配成功,结果加一
——leetcode此题热评
前言
哈喽,大家好,我是一条。
糊涂算法,难得糊涂
点击跳转到《糊涂算法》专栏学习java大厂面试必备数据结构和算法知识!
Question
1221. 分割平衡字符串
难度:简单
在一个 平衡字符串 中,‘L’ 和 ‘R’ 字符的数量是相同的。
给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。
注意:分割得到的每个字符串都必须是平衡字符串。
返回可以通过分割得到的平衡字符串的 最大数量 。
示例 1:
输入:s = "RLRRLLRLRL" 输出:4 解释:s 可以分割为 "RL"、"RRLL"、"RL"、"RL" ,每个子字符串中都包含相同数量的 'L' 和 'R' 。
示例 2:
输入:s = "RLLLLRRRLR" 输出:3 解释:s 可以分割为 "RL"、"LLLRRR"、"LR" ,每个子字符串中都包含相同数量的 'L' 和 'R' 。
示例 3:
输入:s = "LLLLRRRR" 输出:1 解释:s 只能保持原样 "LLLLRRRR".
提示:
1 <= s.length <= 1000
s[i] = ‘L’ 或 ‘R’
s 是一个 平衡 字符串
Solution
标签写的是贪心,我想的是用,官方解答也没能很多的体会贪心。
- 关键是遍历时维护一个变量计算L和R数量的差值
- 有些指针的思想在里面
Code
所有
leetcode
代码已同步至github欢迎
star
/**
* @author 一条coding
*/
class Solution {
public int balancedStringSplit(String s) {
int ans = 0, d = 0;
for (int i = 0; i < s.length(); ++i) {
char ch = s.charAt(i);
if (ch == 'L') {
++d;
} else {
--d;
}
if (d == 0) {
++ans;
}
}
return ans;
}
}
Result
复杂度分析
- 时间复杂度:O(N)
🌈寻宝
⭐今天是坚持刷题更文的第69/100天
⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力
⭐更多数据结构和算法讲解欢迎关注专栏《糊涂算法》
为了回馈各位粉丝,礼尚往来,给大家准备了一些学习资料
需要的小伙伴可以点「下方卡片」👇👇👇关注后回复「算法」领取
以上是关于leetcode刷题69.分割平衡字符串——Java版的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—1221. 分割平衡字符串( 双指针或贪心)—day31