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])
//
}
}
}
}
答案 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
数据结构,将数据存储在键值对中。
您可以使用 HashMap
(Map
的实现)将每个单词作为键存储,并将其作为值存储在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");
}
}
}
}