您的位置:首页 > 其它

2017年初编码标题之一:通过关键字查找在文字中出现的次数并按照降序的排列进行展示

2017-05-26 16:28 483 查看
大家好,我是进入java 1年工作经验的小白,在2017年去上海面试中出现一个笔试题而且还是现场的编码题  被难住了,记住问题后回家开始编码去实现,题目是:

     通过一些 关键字 在
大串的文字中 进行查找 并 统计 出现的 次数 然后按照 降序 进行打印

以下就是我自己编写的代码:

package sadf;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import java.util.TreeMap;

public class Test2 {

    public static void main(String[] args) {

        String[] str2 = {"今天", "回家", "天气", "开心"};

        String str = "今天天气很好,如果有人看到我的博客我会非常开心真的会很开心,今天我也真是很开心的分享我的经验,请大神门不要骂我,我回家了,祝大家天天开心!";

        Test2.counts(str, str2);

    }

    /**

     * 遍历并排序

     */

    public static void counts(String str, String[] str2) {

        Map<String,Integer> map = search(str, str2);

        List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(map.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {

            @Override

            public int compare(Entry<String, Integer > o1, Entry<String, Integer > o2) {

                // o1 - o2 为升序 相反降序

                return (o2.getValue() - o1.getValue());     

            }

        });

        for (Entry<String, Integer> entry : list) {

            // 打印

            System.out.println(entry.toString());

        }

    }

    /**

     * 用来统计保存关键字及出现的次数

     */

    public static Map<String, Integer> search(String str, String[] str2) {

        Map<String, Integer> map = new TreeMap<String, Integer>();

        for (int i = 0; i < str2.length; i++) {

            int count = 0;// 统计出现的次数

            int num = 0;// 出现的位置,并查找存在对应的字符

            int temp = 0;// 查询多个匹配的文字

            while ((str.length() - temp) >= 1) {

                num = str.indexOf(str2[i], temp);

                if (num == -1) {

                    temp = str.length();

                } else {

                    temp = num + 1;

                    count++;

                    map.put(str2[i], count);

                }

            }

        }

        return map;

    }

}

希望在看我这篇文章的时候能够给你一个参考,如果能更加优化或者更好的代码请联系我或者回复给我,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐