我想计算java中给定句子中每个单词的出现次数

时间:2017-03-31 22:12:51

标签: java arrays

java的初学者在面试中被问及 在这里,我必须计算给定句子中每个单词的出现次数。 例如("椅子等于椅子但不等于桌子。"            产量:椅子:2,                     是:1,                     相等:2,                     到:2,                     但是:1,                     不是:1,                     表格1 ) 我已经编写了部分代码并尝试使用for循环,但我失败了....

public static void main(String[] args) 
{
            int counter = 0;
   String a = " To associate myself with an organization that provides a challenging job and an opportunity to provide innovative and diligent work."; 

   String[] b =a.split(" "); //stored in array and splitted

 for(int i=0;i<b.length;i++)
 { 
     counter=0;
     for(int j<b.length;j>0;j--)
     {      
         if(b[i] = b[j])
          //


     }
 }       
}

}

5 个答案:

答案 0 :(得分:0)

一种简单(但不是非常有效)的方法是将所有元素添加到集合中,这不允许重复。见How to efficiently remove duplicates from an array without using Set。然后遍历集合并计算数组中出现的次数,在您检查的每个集合元素之后打印出答案。

答案 1 :(得分:0)

使用散列图计算对象的频率

import java.util.HashMap;
import java.util.Map.Entry;

public class Funly {
    public static void main(String[] args) {
        int counter = 0;
        String a = " To associate myself with an organization that provides a challenging job and an opportunity to provide innovative and diligent work.";

        String[] b = a.split(" "); // stored in array and splitted
        HashMap<String, Integer> freqMap = new HashMap<String, Integer>();
        for (int i = 0; i < b.length; i++) {
            String key = b[i];
            int freq = freqMap.getOrDefault(key, 0);
            freqMap.put(key, ++freq);
        }
        for (Entry<String, Integer> result : freqMap.entrySet()) {
            System.out.println(result.getKey() + " " + result.getValue());
        }
    }
}

答案 2 :(得分:0)

有几个解决方案,我不打算为你提供任何解决方案。但是,我将简要介绍一种可能的解决方案:

您可以使用Map,例如HashMap,其中您使用单词作为键及其出现次数作为值。然后,您需要做的就是将输入字符串拆分为空格并迭代生成的数组。对于每个单词,检查它是否已存在于地图中。如果是这样,您将值增加1,否则您将该单词添加到地图并将值设置为1。之后,您可以迭代地图以创建所需的输出。

答案 3 :(得分:0)

您需要使用 Map数据结构,将数据存储在键值对中。

您可以使用 HashMapMap的实现)将每个单词作为键存储,并将其作为值存储在Map中,如下面的代码所示:内联评论:

String[] b =a.split(" "); //split the array
Map<String, Integer> map = new HashMap<>();//create a Map object
Integer counter=null;//initalize counter
for(int i=0;i<b.length;i++) { //loop the whole array
     counter=map.get(b[i]);//get element from map
     if(map.get(b[i]) == null) { //check if it already exists
          map.put(b[i], 1);//not exist, add with counter as 1
     } else {
          counter++;//if already eists, increment the counter & put to Map
           map.put(b[i], counter);
     }
}  

答案 4 :(得分:0)

使用简单的For循环

public static void main(String[] args) {

    String input = "Table is this Table";
    String[] arr1 = input.split(" ");
    int count = 0;

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

        for (int j = 0; j < arr1.length; j++) {
            String temp = arr1[j];
            String temp1 = arr1[i];

            if (j < i && temp.contentEquals(temp1)) {
                break;

            }
            if (temp.contentEquals(temp1)) {
                count = count + 1;

            }

            if (j == arr1.length - 1) {
                System.out.println(">>" + arr1[i] + "<< is present >>" + count + "<< number of times");

            }

        }

    }

}