字符串中求出现次数最多字符

2018-04-07  本文已影响54人  HWilliamgo

思路:

import java.util.*;

public class MainJava {

    public static void main(String[] args) throws Exception {
        String input = "aavacadfdsfsdhshgWasdfasdfdddaaa";
        System.out.println("the origin input is----" + input);
        new MainJava().doString(input);
    }

    public void doString(String input) {
        char[] chars = input.toCharArray();
        ArrayList<String> lists = new ArrayList<>();
        TreeSet<String> set = new TreeSet<>();
        for (int i = 0, length = chars.length; i < length; i++) {
            lists.add(String.valueOf(chars[i]));
            set.add(String.valueOf(chars[i]));
        }
        System.out.println(set);
        Collections.sort(lists);//将input字符串重排序
        System.out.println(lists);

        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0, length = lists.size(); i < length; i++) {
            stringBuilder.append(lists.get(i));
        }

        input = stringBuilder.toString();
        System.out.println(input);//打印重排序后的字符串
        int max = 0;
        String maxString = "";
        ArrayList<String> maxList = new ArrayList<String>();

        Iterator it = set.iterator();//用Set的迭代器,刚好可以避免重复字符迭代的效率问题
        while (it.hasNext()) {
            String os = (String) it.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) {
                //如果该字符刚好也是最大个数的字符,那么就添加进List记录就行。
                maxList.add(os);
            }
        }

        int index = 0;
        for (int i = 0, len = maxList.size(); i < len; i++) {
            if (maxList.get(i).equals(maxString)) {
                index = i;
                break;
            }
        }
        System.out.println("max data");
        for (int i = index, len = maxList.size(); i < len; i++) {
            System.out.println(maxList.get(i) + "");
        }
        System.out.println();
        System.out.println("max" + max);

    }
}
上一篇 下一篇

猜你喜欢

热点阅读