Java 如何使每个相同字符的计数只显示一次?
我有这个代码,这是工作良好,但问题是,结果显示如下Java 如何使每个相同字符的计数只显示一次?,java,Java,我有这个代码,这是工作良好,但问题是,结果显示如下 public static int[] countlist (char[] list){ int [] counts = new int[list.length]; for (int k = 0; k < list.length; k++) { for (int m = 0; m < list.length; m++) { if (list[m] == list[k])
public static int[] countlist (char[] list){
int [] counts = new int[list.length];
for (int k = 0; k < list.length; k++) {
for (int m = 0; m < list.length; m++) {
if (list[m] == list[k]){
counts[m]++;
}
}
System.out.println( "Letter " + list[k] + " = " + counts[k]);
}
}
我要如何才能一次获得每个字母的输出?
非常感谢
例如,我希望输出如下所示
Letter T = 3
Letter N = 2
Letter Z = 1
Letter H = 2
我还不太熟悉java,我现在可以快速键入代码,但基本上你可以创建一个数组,让键是字母,值是字母的值 在PHP中,这将类似于:
$array = array();
$array['T'] = 1;
$array['T'] = 2;
$array['T'] = 3;
$array['N'] = 2;
$array['Z'] = 1;
$array['H'] = 2;
echo print_r($array); //Resulting in T=>3, N=>2, Z=>1, H=>2
如果您不想覆盖(例如)t的第一个值,那么您所要做的就是实现一个If语句,检查$array['t']是否已经存在
编辑:
在您提供的代码中,您必须在我标记的地方实现它:
public static int[] countlist (char[] list){
int [] counts = new int[list.length];
for (int k = 0; k < list.length; k++) {
for (int m = 0; m < list.length; m++) {
if (list[m] == list[k]){
counts[m]++;
}
}
//====Insert the code here====
System.out.println( "Letter " + list[k] + " = " + counts[k]);
}
}
publicstatic int[]countlist(char[]list){
int[]计数=新的int[list.length];
for(int k=0;k
我还不太熟悉java,我现在可以快速键入代码,但基本上你可以创建一个数组,让键是字母,值是字母的值
在PHP中,这将类似于:
$array = array();
$array['T'] = 1;
$array['T'] = 2;
$array['T'] = 3;
$array['N'] = 2;
$array['Z'] = 1;
$array['H'] = 2;
echo print_r($array); //Resulting in T=>3, N=>2, Z=>1, H=>2
如果您不想覆盖(例如)t的第一个值,那么您所要做的就是实现一个If语句,检查$array['t']是否已经存在
编辑:
在您提供的代码中,您必须在我标记的地方实现它:
public static int[] countlist (char[] list){
int [] counts = new int[list.length];
for (int k = 0; k < list.length; k++) {
for (int m = 0; m < list.length; m++) {
if (list[m] == list[k]){
counts[m]++;
}
}
//====Insert the code here====
System.out.println( "Letter " + list[k] + " = " + counts[k]);
}
}
publicstatic int[]countlist(char[]list){
int[]计数=新的int[list.length];
for(int k=0;k
使用哈希映射保存单个字符的计数/频率
遍历列表,对每个元素执行以下操作:
- 如果元素不在HashMap中,请以频率1插入它
- 如果元素出现在HashMap中,则将频率增加1
最后,打印HashMap的键/值对将为您提供所需的输出。使用HashMap保存单个字符的计数/频率 遍历列表,对每个元素执行以下操作:
- 如果元素不在HashMap中,请以频率1插入它
- 如果元素出现在HashMap中,则将频率增加1
最后,打印HashMap的键/值对将为您提供所需的输出。存储结果的基本数组是必需的吗?您可以使用Hashmap并将字母定义为键,将计数器定义为值
Map<Character, Integer> charactersOccurrences = new HashMap<Character, Integer>();
for (int k = 0; k < list.length; k++) {
if (charactersOccurrences.containsKey(list[k])) {
charactersOccurrences.put(list[k], charactersOccurrences.get(k) + 1);
} else {
charactersOccurrences.put(list[k], 1);
}
}
存储结果的基元数组是必需的吗?您可以使用Hashmap并将字母定义为键,将计数器定义为值
Map<Character, Integer> charactersOccurrences = new HashMap<Character, Integer>();
for (int k = 0; k < list.length; k++) {
if (charactersOccurrences.containsKey(list[k])) {
charactersOccurrences.put(list[k], charactersOccurrences.get(k) + 1);
} else {
charactersOccurrences.put(list[k], 1);
}
}
publicstaticvoidcountlist(char[]list)
{
Map Map=newhashmap();
for(int k=0;k
公共静态无效计数列表(char[]列表)
{
Map Map=newhashmap();
for(int k=0;k
正是我想说的,但你的答案更清楚,很好!正是我想说的,但你的回答更清楚,很好!是的,这是强制性的。没有Hashmap还有其他方法吗?我看到的问题是,您希望将每个字符关联到一个整数,这是不同的类型,因此我们不能使用二维数组。我会说创建一个具有char和int属性的对象,然后创建一个数组,并执行类似于Hashmap的操作。你可以这样做吗?是的,这是强制性的。没有Hashmap还有其他方法吗?我看到的问题是,您希望将每个字符关联到一个整数,这是不同的类型,因此我们不能使用二维数组。我会说创建一个具有char和int属性的对象,然后创建一个数组,并执行类似于Hashmap的操作。你可以这样做吗?