一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
2017-06-02 16:19
686 查看
最近在《JAVA程序员面试宝典》上看到这样一道题:
一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
看了一下书中的解题思路感觉比较复杂,不容易理解。写法上效率也比较低。这里根据自己的想法试着写了另外一种方法。欢迎大家讨论指导。
package main.java.Chapter_07.Section_1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class Example3 {
public static void main(String[] args) {
//为了测试性能,字符串写的很长。
String input ="avzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzc"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh";
Long time1 = new Date().getTime();
new Example3().doString2(input);
Long time2 = new Date().getTime();
new Example3().doString(input);
Long time3 = new Date().getTime();
System.out.println("#################################");
System.out.println(time2 - time1);
System.out.println(time3 - time2);
}
/**
* 自己的写法
* 思路:
* (1)将字符串转换成char数组
* (2)将char放入map中,以char为key,char出现的次数为value。
* (3)用max记录出现最多的次数
* (4)遍历map找出最大次数和出现最多的字符
* @param input
*/
public void doString2(String input){
Map<Character,Integer> map = new HashMap<Character,Integer>();
char[] chars = input.toCharArray();
Integer max = 0;
for (char c : chars) {
Integer count = map.get(c);
count = count ==null?1:++count;
map.put(c, count);
if(count>max){
max = count;
}
}
System.out.println("max "+ max);
Set<Character> set = map.keySet();
for (Character c : set) {
if(max.compareTo(map.get(c))==0){
System.out.println("max data "+c);
}
}
}
/**
* 书中的写法
* @param input
*/
public void doString(String input){
char[] chars = input.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));
}
input =sb.toString();
// System.out.println(input);
int max = 0 ;
String maxString = "";
ArrayList maxlist = new ArrayList<>();
Iterator its =set.iterator();
while (its.hasNext()) {
String os = (String) its.next();
int begin = input.indexOf(os);
int end = input.lastIndexOf(os);
int value = end -begin +1;
if(value > max){
max = value;
maxString = os; //记录最长的字符串第一次出现的地方,为了下面过滤
maxlist.add(os);
}else if(value == max){
maxlist.add(os);
}
}
//这个地方逻辑有点绕。找出 第一次最长字符串出现的位置,在这之前加入 maxlist中的数据都是假的
int index =0;
for (int i = 0; i < maxlist.size(); i++) {
if(maxlist.get(i).equals(maxString)){
index = i;
break;
}
}
System.out.println("max data");
for (int i = index; i < maxlist.size(); i++) {
System.out.println(maxlist.get(i));
}
System.out.println("max "+max);
}
}
运行结果:
max 2132
max data d
max data
d
max 2132
#################################
6
32
一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
看了一下书中的解题思路感觉比较复杂,不容易理解。写法上效率也比较低。这里根据自己的想法试着写了另外一种方法。欢迎大家讨论指导。
package main.java.Chapter_07.Section_1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class Example3 {
public static void main(String[] args) {
//为了测试性能,字符串写的很长。
String input ="avzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzc"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh"
+ "adfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdhshgWasdfasdfffffdddaaaavzcadfdsfsdh";
Long time1 = new Date().getTime();
new Example3().doString2(input);
Long time2 = new Date().getTime();
new Example3().doString(input);
Long time3 = new Date().getTime();
System.out.println("#################################");
System.out.println(time2 - time1);
System.out.println(time3 - time2);
}
/**
* 自己的写法
* 思路:
* (1)将字符串转换成char数组
* (2)将char放入map中,以char为key,char出现的次数为value。
* (3)用max记录出现最多的次数
* (4)遍历map找出最大次数和出现最多的字符
* @param input
*/
public void doString2(String input){
Map<Character,Integer> map = new HashMap<Character,Integer>();
char[] chars = input.toCharArray();
Integer max = 0;
for (char c : chars) {
Integer count = map.get(c);
count = count ==null?1:++count;
map.put(c, count);
if(count>max){
max = count;
}
}
System.out.println("max "+ max);
Set<Character> set = map.keySet();
for (Character c : set) {
if(max.compareTo(map.get(c))==0){
System.out.println("max data "+c);
}
}
}
/**
* 书中的写法
* @param input
*/
public void doString(String input){
char[] chars = input.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));
}
input =sb.toString();
// System.out.println(input);
int max = 0 ;
String maxString = "";
ArrayList maxlist = new ArrayList<>();
Iterator its =set.iterator();
while (its.hasNext()) {
String os = (String) its.next();
int begin = input.indexOf(os);
int end = input.lastIndexOf(os);
int value = end -begin +1;
if(value > max){
max = value;
maxString = os; //记录最长的字符串第一次出现的地方,为了下面过滤
maxlist.add(os);
}else if(value == max){
maxlist.add(os);
}
}
//这个地方逻辑有点绕。找出 第一次最长字符串出现的位置,在这之前加入 maxlist中的数据都是假的
int index =0;
for (int i = 0; i < maxlist.size(); i++) {
if(maxlist.get(i).equals(maxString)){
index = i;
break;
}
}
System.out.println("max data");
for (int i = index; i < maxlist.size(); i++) {
System.out.println(maxlist.get(i));
}
System.out.println("max "+max);
}
}
运行结果:
max 2132
max data d
max data
d
max 2132
#################################
6
32
相关文章推荐
- 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
- 一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出。
- 一个字符串中可能包含a~z中的多个字符,如有重复,求出现次数最多的那个字母及次数,如有多个重复最多的则都输出。
- 一个字符串中可能包括a-z中的多个字符,如有重复,求出现最多次数的那个字符及次数,如有多个重复的则都求出
- 给定字符串,求出现次数最多的那个字母及次数,如有多个重复则都输出
- 给定字符串,求出现次数最多的那个字母及次数,如有多个重复则都输出
- 求包含a~z中多个字符的字符串中重复出现最多的字母及次数问题
- 找出一个字符串中重复最多的字符以及出现的次数
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc
- 计算一个字符串最多重复的字符及出现次数
- 查找一个字符串中出现次处最多的那个字符,并输出出现次数
- 给一个字符串,包含了空格等标点符号,计算出出现次数最多的字母和该字母出现的次数
- 从文件读取包含数字和字母字符串,统计每个字符出现的次数,将次数输出到另外一个文件
- php面试题:如何知道一个未知长度的字符串哪个字符出现的次数最多?(字符串可由字母,数字及其他字符组成)请写出代码。
- JavaScript计算一个字符串最多重复的字符及出现次数
- JavaScript计算一个字符串最多重复的字符及出现次数
- 给出一个字符串(不带空格),找出字符串当中出现次数最多的字符?
- 求一个字符串中出现次数最多的字符的高效算法
- 给定一个字符串,求出该字符串里哪个字符出现的次数最多
- 【原创】打印一个string 字符串中重复字符的次数