LeetCode算法题-Positions of Large Groups(Java实现)
这是悦乐书的第323次更新,第346篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第193题(顺位题号是830)。在由小写字母组成的字符串S中,那些相同的连续字符会组成集合。例如,诸如S =“abbxxxxzyy”的字符串具有集合“a”,“bb”,“xxxx”,“z”和“yy”。
如果集合有3个或更多字符,称之为大集合,要求找到每个大集合的起点和终点,以数组形式返回,以从前往后顺序。例如:
输入:“abbxxxxzzy”
输出:[[3,6]]
说明:“xxxx”是具有起始位置3和结束位置6的单个大集合。
输入:“abc”
输出:[]
说明:我们有“a”,“b”和“c”,但没有大集合。
输入:“abcdddeeeeaabbbcd”
输出:[[3,5],[6,9],[12,14]]
注意:1 <= S.length <= 1000
本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。
02 解题
题目的意思很明确,要求找到字母连续出现3次及以上且字母相同的子串,取其起始索引,作为数组返回,并且只能是从前往后的顺序。在遍历字符串中的字母时,还需要记数,判断出现次数,满足条件就取开始索引、结束索引存入List中。
第一步,初始化结果数组,S的长度n。
第二步,遍历S中的字符,定义两个变量,count统计出现次数,index记录开始索引。使用一个循环,从当前位置开始往后遍历查找,遇到相同字符,count加1,直到遇上不相等的字符或者遍历完右边剩下的字符。接着判断,如果count大于等于3,说明符合题目条件,新创建一个List,将起始索引add进去,再将List添加进结果数组中去。
第三步,返回结果数组。
public List<List<Integer>> largeGroupPositions(String S) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
int n = S.length();
for (int i=0; i<n-1; i++) {
int count = 1;
int index = i;
while (i+1 < n && S.charAt(i) == S.charAt(i+1)) {
count++;
i++;
}
if (count >= 3) {
List<Integer> list = new ArrayList<Integer>();
list.add(index);
list.add(i);
result.add(list);
}
}
return result;
}
03 小结
算法专题目前已日更超过五个月,算法题文章193+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode算法题-Positions of Large Groups(Java实现)的更多相关文章
- LeetCode算法题-Subdomain Visit Count(Java实现)
这是悦乐书的第320次更新,第341篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第189题(顺位题号是811).像"discuss.leetcode.com& ...
- LeetCode算法题-Letter Case Permutation(Java实现)
这是悦乐书的第315次更新,第336篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第184题(顺位题号是784).给定一个字符串S,将每个字母单独转换为小写或大写以创建另 ...
- LeetCode算法题-Jewels and Stones(Java实现)
这是悦乐书的第313次更新,第334篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第182题(顺位题号是771).字符串J代表珠宝,S代表你拥有的石头.S中的每个字符都是 ...
- LeetCode算法题-Reach a Number(Java实现)
这是悦乐书的第310次更新,第331篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第179题(顺位题号是754).你站在无限数字线的0号位置.在目的地有个target.在 ...
- LeetCode算法题-Shortest Completing Word(Java实现)
这是悦乐书的第309次更新,第330篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第178题(顺位题号是748).从给定的字典单词中查找最小长度单词,其中包含字符串lic ...
- LeetCode算法题-Self Dividing Numbers(Java实现)
这是悦乐书的第305次更新,第324篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第173题(顺位题号是728).自分割数是一个可被其包含的每个数字整除的数字.例如,12 ...
- LeetCode算法题-Find Pivot Index(Java实现)
这是悦乐书的第304次更新,第323篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第172题(顺位题号是724).给定一个整数nums数组,编写一个返回此数组的" ...
- LeetCode算法题-To Lower Case(Java实现)
这是悦乐书的第301次更新,第320篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第169题(顺位题号是709).实现具有字符串参数str的函数ToLowerCase() ...
- LeetCode算法题-Count Binary Substrings(Java实现)
这是悦乐书的第293次更新,第311篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第161题(顺位题号是696).给定一个字符串s,计算具有相同数字0和1的非空且连续子串 ...
随机推荐
- DNS域名工作原理及解析
0x00 定义 DNS( Domain Name System)是“域名系统”的英文缩写,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP和UDP端口53 ...
- php关于jquery ajax json不返回数据的问题
分析原因: 1.php端代码有错导致echo输出错误,导致ajax返回函数不执行 2.jquery版本原因 3.juqery前端script代码问题
- web框架-(五)Ajax
Ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,AJAX = 异步 JavaScript和X ...
- 洛谷P5055 可持久化文艺平衡树 (可持久化treap)
题目链接 文艺平衡树的可持久化版,可以使用treap实现. 作为序列使用的treap相对splay的优点如下: 1.代码短 2.容易实现可持久化 3.边界处理方便(splay常常需要在左右两端加上保护 ...
- 用小程序做一个类似于苹果AssistiveTouch功能
一.首先我先介绍一下,我们要做一个什么样的项目功能 项目功能就是一个音频点击播放,当点击为播放的状态时,一个音频的动图出现,而且是可以跟随着手指的滑动而滑动,而且,在滑动动图的时候,当前下的页面是不可 ...
- 多层for循环嵌套,如何能优化一点点,从运行时间维度
将循环次数多的放在最内层,循环次数最少的放在最外层 换句话说,按照循环次数从小到大依次嵌套
- UVA-10480-Sabotage(最大流最小割,打印路径)
链接: https://vjudge.net/problem/UVA-10480 题意: The regime of a small but wealthy dictatorship has been ...
- c++ copy和operator =
目录(?)[+] 构造函数 拷贝构造函数 赋值函数 C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法.下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函 ...
- 【c++】一道关于继承和析构的笔试题
题目如下,求输出结果 class A { public: A() { cout<<"A"<<endl; } ~A() { cout<<" ...
- lazarus 线程调试
lazarus站点的文档中看到的.简单用法: uses LCLProc; DbgOutThreadLog (msg: string); overload; --有好几个不同参数的定义.