数学求解之求出现次数最多的字母和次数
来源:互联网 发布:linux mysql命令大全 编辑:程序博客网 时间:2024/05/22 02:16
一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。〔金山公司面试题〕
import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.TreeSet;public class FindRepeatChar {public static void doString(String strInput) {char[] chars = strInput.toCharArray();ArrayList lists = new ArrayList();TreeSet set = new TreeSet();for (int i = 0; i < chars.length; i++) {lists.add(String.valueOf(chars[i]));set.add(String.valueOf(chars[i]));}System.out.println(set);Collections.sort(lists);System.out.println(lists);StringBuffer sb = new StringBuffer();for (int i = 0; i < lists.size(); i++) {sb.append(lists.get(i));}strInput = sb.toString();System.out.println(strInput);int max = 0;String maxString = "";ArrayList maxList = new ArrayList();for (Iterator its = set.iterator(); its.hasNext();) {String os = (String) its.next();int begin = strInput.indexOf(os);int end = strInput.lastIndexOf(os);int value = end - begin + 1;if (value > max && value > 1) {max = value;maxString = os;maxList.add(os);} else if (value == max) {maxList.add(os);}}System.out.println("出现最多的字符为:");for (int i = 0; i < maxList.size(); i++) {System.out.println(maxList.get(i) + "");}System.out.println("出现最多的次数为:" + max);}public static void main(String[] args) {String strInput = new String("aavzcadfdsfsdhshgWasdfasdf");doString(strInput);}}
上面的算法有问题:
下面是修改以后的:
import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.TreeSet;public class FindRepeatChar { public static void doString(String strInput) { char[] chars = strInput.toCharArray(); //去掉重复的字符串 TreeSet set = new TreeSet(); for (int i = 0; i < chars.length; i++) { set.add(String.valueOf(chars[i])); } System.out.println(set); System.out.println(strInput); int max = 0; //获取每种字符串出现的次数,并求出最大的出现次数 HashMap<String,Integer> maps=new HashMap<String,Integer>(); for (Iterator its = set.iterator(); its.hasNext();) { String os = (String) its.next(); int value=countToken(strInput,os); if(value>max) { max=value; } maps.put(os, value); } //把出现次数最大的放入List中 List maxList=new ArrayList(); for(Map.Entry<String,Integer> entry:maps.entrySet()) { String key=entry.getKey(); Integer val=entry.getValue(); if(val==max ) { maxList.add(key); } } System.out.println("出现最多的字符为:"); for (int i = 0; i < maxList.size(); i++) { System.out.println(maxList.get(i) + ""); } System.out.println("出现最多的次数为:" + max); } //获取出现次数 public static int countToken(String str, String token) { int count = 0; while (str.indexOf(token) != -1) { count++; str = str.substring(str.indexOf(token) + token.length()); } // System.out.println(token + "出现的次数:" + count); return count; } public static void main(String[] args) { String strInput = new String("你是猪你是猪你是猪你是猪你是猪你是猪你是猪你是猪你是猪afdadfdasffafadsfdhjgfhjgfhfadsssssss"); doString(strInput); doString("aavzcadfdsfsdhshgWasdfasdf"); doString("aasss"); }}
- 数学求解之求出现次数最多的字母和次数
- 求字符串中出现次数最多的字母及次数
- JS练习题①:求字符串中出现次数最多的字母和出现次数
- 求给定字母字符串中字母出现最多的字母和出现的次数
- 字符串中出现次数最多的字母和次数
- 求出现频率最多的那个字母和出现的次数
- js常见笔试题之字母去重和统计某个出现次数最多的字母
- 求字符串中出现次数最多和第二多的字母
- String串处理练习(求连续出现相同字母最多的那个字母和出现次数)
- 给定字符串,求出现次数最多的那个字母及次数,如有多个重复则都输出
- 给定字符串,求出现次数最多的那个字母及次数,如有多个重复则都输出
- Java 寻找出字符串中出现次数最多的字母和出现的次数
- 找出字符串中出现次数最多的字母和出现的次数
- 编码实现一个字符串中出现最多字母的次数(只要求找出出现最多字母的次数,不需要找出具体字母
- 求出现最多的字符及次数
- 求出现次数最多的数
- 求出现次数最多的数
- 计蒜客-求出现次数最多的字符
- db2创建索引原则
- hibernate的get和load区别
- JBPM4基础篇04-设计请假流程,JBPM集成到Web Project
- opensuse开启telnet服务
- java清空堆栈中的某个元素
- 数学求解之求出现次数最多的字母和次数
- Nand Flash and Nor flash
- 在安卓中获取一个城市的天气情况
- jquery uploadify插件
- 利用dex2jar和jd-gui反编译apk文件,得到其源代码!!
- lua面向对象编程之点号与冒号的差异详细比较
- 用C实现一个简单的泛型
- 自己写java.lang.String
- java上机 第十二周 任务一