java如何在数字字符串中查找最频繁的数字?
/*我是编程新手。作为作业的一部分,我必须找到数字字符串中最常见的数字。虽然我的代码被编译了,但它并没有给出正确的结果。请帮我做这个。 */
import java.util.*;
public class program
{
public int test(String number)
{
int freq0,freq1,freq2,freq3,freq4,freq5,freq6,freq7,freq8,freq9;
freq0=0;
freq1=0;
freq2=0;
freq3=0;
freq4=0;
freq5=0;
freq6=0;
freq7=0;
freq8=0;
freq9=0;
for (int i =0; i<number.length();i++)
{
switch (number.charAt(i))
{
case 48: freq0++;
break;
case 49: freq1++;
break;
case 50: freq2++;
break;
case 51: freq3++;
break;
case 52: freq4++;
break;
case 53: freq5++;
break;
case 54: freq6++;
break;
case 55: freq7++;
break;
case 56: freq8++;
break;
case 57: freq9++;
break;
}
}
List<Integer> hope = new ArrayList<Integer>();
hope.add(freq0);
hope.add(freq1);
hope.add(freq2);
hope.add(freq3);
hope.add(freq4);
hope.add(freq5);
hope.add(freq6);
hope.add(freq7);
hope.add(freq8);
hope.add(freq9);
int temp=0;
for (int j=0; j<(hope.size());j++)
{
if (temp<hope.get(j))
{
temp=hope.get(j);
}
}
return temp;
}
}
//该类由另一个主类调用。我也在写代码
public class checker
{
public static void main ( String args [])
{
int inputs[] = {1234, 11, 144, 97764 };
int outputs[] = {1, 1, 4, 7};
for(int i=0; i<inputs.length; i++) {
int input=inputs[i];
int oracle_output=outputs[i];
program p = new program();
String input_string = "" + input;
int output = p.test(input_string);
if(output==oracle_output) {
System.out.println("test passed for " + input);
} else {
System.out.println("test failed for " + input);
}
}
}
}
# 1 楼答案
您所能做的就是使用一个简单的数组
如果它是一个
String
以获取最大占用位数
你程序中的错误是你没有考虑重复多次的数字,你只考虑了重复的次数。因此,你只得到频率,而不是数字
# 2 楼答案
以下是可读性更强、更简单的代码:
# 3 楼答案
正如注释中所说,代码可以变得更简单(更可读) 但是,您的问题的答案是:返回值(temp)是最频繁数字的频率,而不是数字本身(即j,您需要“记住”它)