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

思路:

  1. 引入TreeSet:通过集合快速找到所有出现的字符串;
  2. 引入ArrayList:为了快速排序,再通过StingBuilder生成排序后的字符串;
  3. 通过String api中的基本方法indexOf和lastIndexOf来计算TreeSet中每个字符串的最大值;
  4. 如果出现相同的,则把相同的都记录在一个列表中;
  5. 记录第一个出现次数最多的字符串(为了计算多个字符串相同情况);
  6. 计算最大字符串列表中哪些才是真正出现次数最多的。

 

import java.util.*;

public class MainJava{
    
    public static void main(String[] args) throws Exception{
        String input = "adfaegaeasgaegadgasegaaaaa";
        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;i<chars.length;i++){
            lists.add(String.valueOf(chars[i]));
            set.add(String.valueOf(chars[i]));
        }
        System.out.println(set);
        Collection.sort(lists);
        System.out.println(lists);
        
        StringBuilder stringBuider = new StringBuilder();
        for(int i=0;i<lists.size();i++){
            stringBuider.append(lists.get(i));
        }

        input = stringBuilder.toString();
        System.out.println(input);
        int max = 0;
        String maxSting = "";
        ArrayList<String> maxList = new ArrayList<String>();
        
        Iterator it = set.iterator();
        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){
                maxList.add(os);
            }
        }
        
        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();
        System.out.ptintln("max"+max);

    }
}
    

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值