几个关于字符串的算法
网站首页 文章专栏 几个关于字符串的算法
几个关于字符串的算法
编辑时间:2019-06-19 15:20 作者:毛毛小妖 浏览量:24 评论数:0

一、打印一个字符串中a出现的次数

private static int getCount(String input) {
	input = input.toLowerCase();
	int count = 0;
	for(int i=0;i<input.length();i++){
		if(input.charAt(i)=='a'){
			count++;
		}
	}
	System.out.println(count);
	return count;
}

二、打印一个字符串中出现次数最多的字符

private static char frep(String input) {
	input = input.toLowerCase();
	Map<Character,Integer> map = new HashMap<>();
	for(int i=0;i<input.length();i++){
		if(!map.containsKey(input.charAt(i))){
			map.put(input.charAt(i), 1);
		}else{
			map.put(input.charAt(i), map.get(input.charAt(i))+1);
		}
	}
	System.out.println(map);
	Character maxKey = 0;
	Integer max=0;
	for(Map.Entry<Character, Integer> entry : map.entrySet()){
		if(entry.getValue()>max){
			max=entry.getValue();
			maxKey=entry.getKey();
		}
	}
	return maxKey;
}

三、根据字符出现的频率从大到小排序并输出

public static String frequencySort(String s) {
    Map<Character, Integer> charFreqMap = new HashMap<>();
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if(charFreqMap.containsKey(c)){
        	charFreqMap.put(c, charFreqMap.get(c) + 1);
        }else{
        	charFreqMap.put(c, 1);
        }
    }
    List<Map.Entry<Character, Integer>> list = new ArrayList<>(charFreqMap.entrySet());
    /*  jdk1.8新增表达式解决方案
     *  list.sort((map1,map2)->
     *	    map2.getValue().compareTo(map1.getValue())
     *  );
     */
    list.sort(new Comparator<Map.Entry<Character, Integer>>() {
		@Override
		public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
			if(o1.getValue()>o2.getValue()){
				return -1;
			}else if(o2.getValue()>o1.getValue()){
				return 1;
			}
			return 0;
		}
	});
    String result="";
    for(Map.Entry<Character, Integer> enter:list){
    	int count = enter.getValue();
    	Character key = enter.getKey();
    	for(int i=0;i<count;i++){
    		result += key;
    	}
    }
    return result;
}

四、最长回文字串

public static String maxHuiwen(String s){
	Map<String,Integer> map = new HashMap<>();
    for(int i=0;i<s.length();i++){
    	List<Character> list = new ArrayList<>();
    	for(int j=0;j<=i;j++){
    		list.add(s.charAt(j));
    	}
    	String start = "";
    	String end = "";
    	for(int m=0;m<list.size();m++){
    		start+=list.get(m);
    	}
    	for(int n=list.size()-1;n>=0;n--){
    		end+=list.get(n);
    	}
    	if(start!="" && end!="" && start.equals(end)){
    		map.put(start, list.size());
    	}
    	list = new ArrayList<>();
    }
    int max = 0;
    String maxKey = "";
    for(Map.Entry<String, Integer> entry:map.entrySet()){
    	if(entry.getValue()>max){
    		max=entry.getValue();
    		maxKey=entry.getKey();
    	}
    }
    return maxKey;
}

 

推荐文章
来说两句吧
最新评论
    还没有人评论哦,快来坐沙发吧!