找出字符串中重复的字符 打印出来
2011-08-16 22:23
260 查看
1. 第一种方法:
利用简单的计算
2. 利用jdk中的容器
或者:
如何还有简单的算法 请帮忙提出来
利用简单的计算
package com.first; public class moreChar { /** * @param args */ public static void main(String[] args) { String a = "aaabbbcccdddeee"; int sum [] = new int[10000]; for(int j=0; j<a.length(); j++) sum[(int)a.charAt(j)]++; int max = -1,csum=0; Character c [] = new Character[a.length()]; for (int i = 0; i < sum.length; i++){ if(max < sum[i]){ max = sum[i]; c[csum++] =(char)i; }else if(max == sum[i] && max !=0){ max = sum[i]; c[csum++] = (char)i; } } System.out.println("次数为:"+max); for (int i = 1; i < c.length; i++) { if (c[i] != null) System.out.println(c[i]); } } }
2. 利用jdk中的容器
package com.first; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class mostchar { public static void main(String[] args){ List list=new ArrayList(); Set set=new HashSet(); String s="aaabbbcccdddeee"; char[]arr=s.toCharArray(); Map map= new TreeMap(); for(int i=0;i<arr.length;i++){ Integer value=(Integer) map.get(arr[i]); if(value==null) map.put(arr[i], 1); else map.put(arr[i], (Integer)map.get(arr[i])+1); } for(int i=0;i<arr.length;i++){ if((Integer)map.get(arr[i])!=0){ // 把所有的value全部放在list中。 list.add((Integer)map.get(arr[i])); //再对list进行排序,找到value最大的值即:list.get(list.size()-1) Collections.sort(list); // 过滤一下,让value最大的值,进入循环。 if((Integer)map.get(arr[i]) == list.get(list.size()-1)){ // 把对应的key放在set中,为了使防止重复。 set.add(arr[i]); } } } Iterator ite=set.iterator(); while(ite.hasNext()){ System.out.println(ite.next()); } } }
或者:
package com.first; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; public class mostchar2 { public static void main(String[] args){ String s="aaabbbcccdddeee"; char[]arr=s.toCharArray(); Map map =new TreeMap(); int max=1; List<Character> maxs = new ArrayList<Character>(); //字符数组 for(int i=0;i<arr.length;i++){ Integer value= (Integer)map.get(arr[i]); if(value==null|| value.equals("")|| value==0){ map.put(arr[i], 1); }else{ //如果已经存在这么一个key map.put(arr[i],(Integer)map.get(arr[i])+1); if(max <(Integer)map.get(arr[i])){ max=(Integer)map.get(arr[i]); maxs.removeAll(maxs); maxs.add(arr[i]); }else if(max == (Integer)map.get(arr[i])){ maxs.add(arr[i]); } } } for(Character s1:maxs) System.out.println(s1); } }
如何还有简单的算法 请帮忙提出来
相关文章推荐
- 360——将每个字符串数组中的每个字符串的第一个非重复字符打印出来
- 将字符串中重复的字符打印出来
- "找出字符串中第一个不重复的字符"和"找出字符串中最后一个重复的字符"的两种方法的C++实现
- 智乐软件笔试题目(三)【揭秘智乐软件笔试题】找出在字符串中找出第一个不重复的字符|| 找出最后一个重复的字符 (c/c++)
- JavaScript实现找出字符串中第一个不重复的字符
- 字符串中找出重复出现N次的字符
- 找出一个字符串中不含重复字符的最长子字符串
- 给一个字符串(包含重复字符),打印它的所有可能的组合。
- 找出字符串中第一个不重复出现的字符(仅小写字母)
- 华为OJ平台试题 ——字符串:打印字符串中重复的字符
- 输入一行字符串,找出其中重复出现且最长的字符串,输出它及其首字符的位置
- 05年华中科大机试第一题(对给定的一个字符串,找出有重复的字符,并给出其位置)
- 定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);找出字符串中的最长子串,要求子串不含重复字符,时间复杂度是O(n);
- 一个字符串有两个A,计算里面的字符个数,并打印出来
- 从字符串S中找出不包含重复字符的最大连续子字符串长度
- 已知一个有重复字符的字符串,打印其所有不同的字符排列
- 【原创】打印一个string 字符串中重复字符的次数
- 一道面试题:从一个字符串中找出第一个不重复字符;算法一;
- 在一个字符串中找出第一次重复出现的字符
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。