首页 > 试题广场 >

单词识别

[编程题]单词识别
  • 热度指数:18194 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个英文句子,把句子中的单词(不区分大小写)按出现次数按从多到少把单词和次数在屏幕上输出来,次数一样的按照单词小写的字典序排序输出,要求能识别英文单词和句号

输入描述:
输入为一行,由若干个单词和句号组成


输出描述:
输出格式参见样例。
示例1

输入

A blockhouse is a small castle that has four openings through which to shoot.

输出

a:2
blockhouse:1
castle:1
four:1
has:1
is:1
openings:1
shoot:1
small:1
that:1
through:1
to:1
which:1
Java

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        TreeMap<String, Integer> map = new TreeMap<>();
        String s = "";
        while (scanner.hasNext()) s += scanner.nextLine();
        String[] s1 = s.replace(".", "").replace(",", "").toLowerCase().split(" ");
        for (String s2 : s1) map.merge(s2, 1, Integer::sum);
        for (Map.Entry<String, Integer> entry : map.entrySet())
            System.out.println(entry.getKey()+":"+entry.getValue());
    }
}




编辑于 2020-03-19 22:46:11 回复(0)
//这道题的标准答案怎么没按照单词频提交观点率降序输出呢

发表于 2019-03-14 15:03:44 回复(0)
import java.util.Comparator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
           //把逗号和句号替换成空格,再按空格切成单词
        s = s.replace(".", " ");
        s = s.replace(",", " ");
        String[] arr = s.split(" ");
        //比较器
        Map<String, Integer> map = new TreeMap<String, Integer>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareToIgnoreCase(o2);
            }
        });
        for (String word : arr) {
            word = word.toLowerCase();
            if(map.get(word) == null){
                map.put(word, 1);
            }else{
                map.put(word, map.get(word)+1);
            }
        }
        map.remove("");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }
}

发表于 2019-03-12 15:17:46 回复(1)
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
public class Main {
 public static String []replace(String s){
  String t=s.replace(",", "");
  String u=t.replace(".", "");
  return u.split(" ");
 }
 public static void main(String[] args) {
  Scanner in=new Scanner(System.in);
  while(in.hasNext()) {
  String v=in.nextLine();
  String s=v.toLowerCase();
        String[] nn=replace(s);
        Arrays.sort(nn);
        HashSet<String>set=new HashSet<>();
        for(int i=0;i<nn.length;i++) {
         set.add(nn[i]);
        }
        int []num=new int[set.size()];
        String []mm=new String[set.size()];
        int n=0;
        for(String g:set) {
         mm[n]=g;
         n++;
        }
        Arrays.sort(mm);
        for(int i=0;i<set.size();i++) {
         for(int j=0;j<nn.length;j++) {
          if(mm[i].equals(nn[j])) {
           num[i]++;
          }
         }
        }
       for(int i=0;i<set.size();i++) {
        System.out.println(mm[i]+":"+num[i]);
        }
 }
}
}

发表于 2019-03-05 23:08:19 回复(0)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Main{

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        String line1 = line.replaceAll(",", "").replaceAll("\\.", "").toLowerCase();
        String[] words = line1.split(" ");
        Map<String, Integer> map = new HashMap<String, Integer>();
        Set<String> set = new TreeSet<String>();
        for (String word : words) {
            set.add(word);
            if (map.containsKey(word)) {
                map.put(word, map.get(word) + 1);
            } else {
                map.put(word, 1);
            }
        }
        Iterator<String> I = set.iterator();
        while (I.hasNext()) {
            String e = I.next();
            System.out.println(e + ":" + map.get(e));
        }
    }
}
题目描述有毒,根本不是按出现次数排序,而是按单词的顺序排序
发表于 2019-02-23 17:06:14 回复(0)

问题信息

上传者:小小
难度:
5条回答 10925浏览

热门推荐

通过挑战的用户

查看代码
单词识别