找出数组中重复次数最多的元素并打印
来源:互联网 发布:看刀路软件 编辑:程序博客网 时间:2024/05/01 18:46
题目要求:找到一个字符串中的一个连续子串,这个子串内不能有任何两个字符是相同的,
并且这个子串是符合要求的最长的。
例如:abcdeab,这个字符串有很多不重复子串,比如:abcde, bcdea, cdeab都是不重复子串,
而且都是最长的。
//试验例子 abceaefk abceaaaaaa
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- public class LongestsubString {
- public static void main(String[] args) {
- print(getLongestNoRepeatSubString("abceafb"));
- }
- private static void print(List list) {
- for(Iterator it=list.iterator();it.hasNext();){
- System.out.println(it.next());
- }
- }
- public static List getLongestNoRepeatSubString(String src){
- char[] arr=src.toCharArray();
- int len=arr.length;//数组长
- List<String> subList=new ArrayList<String>();//最长的子串可能会有多少,用这个临时保存
- int max;//最长子段长度
- int start;//最长子段的开始位置
- Map<Character,Integer> charMap=new HashMap();//保存对应字符及其最后出现的位置
- max=start=0;
- int i;
- for(i=0;i<len;i++){
- if(!charMap.containsKey(arr[i])){//不包含的话就加入到map中
- charMap.put(arr[i], i);
- }else{//包含的话就得处理了,看在重复出现前的子串是否是更长
- int pre=charMap.get(arr[i]);
- int tempLen=i-start;//当前子串长度
- if(tempLen>=max){//找到新的最长子串了
- if(tempLen>max)subList.clear();//需要刷新列表
- max=tempLen;
- subList.add(src.substring(start, i));//保存这个最长子串
- charMap.put(arr[i], i);//置成新的位置
- }else{
- charMap.put(arr[i], i);//置成新的位置
- }
- start=pre+1;//只要重复了,都得重新开始设置start的位置
- }
- }
- if(i-start>=max){//这个主要是处理这种情况:abcd 没有重复的~~
- if(i-start>max)subList.clear();
- subList.add(src.substring(start, i));
- }
- return subList;
- }
- }
- 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素并打印
- 找出整型数组中重复次数最多的元素
- 找出数组中重复次数最多的元素
- 去除数组中重复项,并统计重复出现次数最多的元素及重复次数
- 数组中重复次数最多的元素
- 数组中重复次数最多的元素
- 找出数组中重复次数最多的数
- 找出数组中重复次数最多的数
- 如何在数组中找出重复次数最多的数
- 找出数组中重复次数最多的数
- 如何找出数组中重复次数最多的数
- 找出一个数组中重复次数最多的数
- 数组之找出Array中重复次数最多的数
- 如何找出数组中重复次数最多的数
- java 找出n个元素数组中重复次数最多的数(假设出现次数大于n/2)
- 求数组中重复次数最多的元素
- SWT如何给Table添加右键菜单
- ASP.NET页面执行顺序 (HttpModule,HttpHandler)
- 利用后缀数组求字符串的最长重复子串
- Oracle中Clob与Blob字段的读取
- SQL server 2005 如何批量修改架构名(包括表名和存储过程名)
- 找出数组中重复次数最多的元素并打印
- Sharepoint ListTemplateId
- C# API 调用格式和参数类型
- nasm下的int 3
- jquery模糊匹配
- 关于浏览器内核的一些小知识,明明白白选浏览器
- cocos2d - CCSpriteBatchNode的使用
- Dbus简介
- 第五章习题