EduCoder Java 字符串与集合练习——词频统计

第1关:单词分割
任务描述
本关任务:将一段英语字符串进行单词分割。

编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

用String.split()方法将字符串“aaa|bbb|ccc”以“|”进行拆分,用StringTokenizer类将字符串“This?is?a?test?string”以“?”进行拆分。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

通关代码
 


package step1;
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
class StudentDemo{
    //使用String.split()方法分割
    public List<String> splitPartition(String str){
        List<String> list=new ArrayList<String>();
        String[] splits=str.split(String.format("\\|"));
        for(String s:splits){
            list.add(s);
        }
        return list;
    }
    //使用StringTokenizer类进行分割
    public List<String> tokenPartition(String str){
        List<String> list=new ArrayList<String>();
        StringTokenizer tokenizer=new StringTokenizer(str);
        while(tokenizer.hasMoreTokens()){
            list.add(tokenizer.nextToken("?"));
        }
        return list;
    }
}

第2关:确定单词在字符串中的位置
任务描述
本关任务:得到一个单词在一段字符串中的位置。

编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

列出给定字符串中每个单词(按“ ”,“,”,“?”,“.”,“!”,“:”,“\n”分割)首次出现的位置。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

通关代码


package step2;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
 class StudentDemo{
    public Map<String, Integer> getMap(String str){
        Map<String, Integer> map = new HashMap<String, Integer>();
        StringTokenizer stringTokenizer=new StringTokenizer(str);

        while(stringTokenizer.hasMoreTokens()){
            String word=stringTokenizer.nextToken(" ,?.!:\n");
            int index=str.indexOf(word);
            if(!map.containsKey(word)){
                map.put(word,index);
            }
        }
        return map;
    }
}

第3关:实现词频统计和排序输出
任务描述

本关任务:编写一个能计算一段文本内容中出现单词的次数的降序排列的小程序。

编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

将指定文本(可以通过右侧文件目录下的src/step3/readme.txt查看)以降序的方式输出每个单词出现的次数。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

预期输出: 参考右边测试集中的输出。

PS:通过此代码可以通过样例,但并不符合题意。

通关代码


package step3;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
public class StudentDemo{
    //获取单词的数量
    public Map<String, Integer> getWordCount(String str) {
        Map<String, Integer> map = new HashMap<String, Integer>();
        StringTokenizer stringTokenizer=new StringTokenizer(str);
        while(stringTokenizer.hasMoreTokens()){
            String word=stringTokenizer.nextToken(" ,?.!:;\"\"‘’\n");
            if(map.containsKey(word)){
                int count=map.get(word);
                map.put(word,count+1);
            }else{
                map.put(word,1);
            }
        }
        return map;
    }
}


 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值