• 试题---求出现重现次数最多的字母,如有多个重复的则都求出来


        import java.util.ArrayList;  
        import java.util.Collections;  
        import java.util.Iterator;  
        import java.util.List;  
        import java.util.Set;  
        import java.util.TreeSet;  
        /* 
            一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf", 
            求出现次数最多的那个字母及次数,如有多个重复的则都求出。网上的解答有些是错的,少了46行那句话。 
        */  
        public class Demo3 {  
            public static void main(String[] args) {  
                String data="ddaabbbccc";  
                getMax(data);  
            }  
            private static void getMax(String data) {  
                //将字符串使用toCharArray()方法变为字符数组,再遍历数组分别存入ArrayList和TreeSet  
                List<String> list = new ArrayList<String>();  
                Set<String> set = new TreeSet<String>();  
                char[] array = data.toCharArray();  
                for (int i = 0; i < array.length; i++) {  
                    list.add(String.valueOf(array[i]));  
                    set.add(String.valueOf(array[i]));  
                }  
                //利用集合工具类Collections的sort()方法对ArrayList排序  
                Collections.sort(list);  
                //使用StringBuffer存放list,并用toString()方法转换为字符串。  
                StringBuffer sb = new StringBuffer();  
                Iterator<String> iterator = list.iterator();  
                while(iterator.hasNext()){  
                    sb.append(iterator.next());  
                }  
                String string = sb.toString();  
                //至此将字符串变为了有序不允许重复的set和有序且字母有重复的String  
                //迭代set,使用indexOf和lastIndexOf方法操作String得到重复字母次数  
                //max记录最大重复次数,maxString记录当前最大字符串,maxList存储所有最大字符,maxList.size()即为重复字符个数  
                int max=0;  
                String maxString="";  
                ArrayList<String> maxList = new ArrayList<String>();  
                for(Iterator<String> it = set.iterator();it.hasNext();){  
                    String s = (String) it.next();  
                    int begin = string.indexOf(s);  
                    int end = string.lastIndexOf(s);  
                    int value = end-begin+1;  
                    if(value>max&&value>1){  
                        maxList.clear();//产生新的最大字符要清空之前的最大字符,否则输出最大字符不正确。  
                        max = value;  
                        maxString = s;  
                        maxList.add(s);  
                    }else if(value==max){  
                        maxList.add(s);  
                    }  
                }  
                System.out.println(list);  
                System.out.println(set);  
                for (int i = 0; i < maxList.size(); i++) {  
                    System.out.println("最大字符"+maxList.get(i));  
                }  
                System.out.println("最多次数:"+max);  
            }  
        }  
    
  • 相关阅读:
    Unity 2018 version class.jar path
    GitHub git
    QT install
    Android Studio 安装及汉化
    Unity 调用android
    JAVA 调用c++ 扩展 批评那些垃圾,
    JAVA java调用C++动态链接库dll,有详细过程。VS2015+Eclipse以及失败解决方案
    前端将数据转化为弹幕效果的实现方式
    css圣杯布局的实现方式
    浏览器缓存问题原理以及解决方案
  • 原文地址:https://www.cnblogs.com/day93110/p/6094181.html
Copyright © 2020-2023  润新知