zoukankan      html  css  js  c++  java
  • 较大分组位置

    在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。

    例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z""yy" 这样的一些分组。
    分组可以用区间[start, end]表示,其中startend 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6]。我们称所有包含大于或等于三个连续字符的分组为较大分组 。找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。

    解题思路

    遍历目标字符串s:

    1、查找连续相同字符的个数(设置查询的左边界)
    2、只有连续相同字符数 >= 3时,才能录入结果数组
    3、改变左边界的值

    class find_index{
    	public ArrayList find(String s) {
    		ArrayList res=new ArrayList();
    		int left=0;
    		while(left<s.length()) {
    			int count=0; //用来统计相同字符串的长度
    			while(left+count<s.length() && s.charAt(left)==s.charAt(left+count)) {
    				count++;
    			}
    			if(count>=3) {
    				res.add(Arrays.asList(left,left+count-1));
    			}
    			left=left+count;
    		}
    		return res;
    	}
    }
    

    本题出处

  • 相关阅读:
    问题账户需求分析
    2018年春季个人阅读计划
    图表分析
    《软件需求与分析》需要掌握的内容
    假期实践体验
    开发进度12
    开发进度11
    python+opencv实现轮廓形状拟合
    ubuntu无法安装vim、tree等解决办法
    报错 version `GLIBCXX_3.4.22' not found
  • 原文地址:https://www.cnblogs.com/BY1314/p/14238253.html
Copyright © 2011-2022 走看看